GVKun编程网logo

PHP将XML转换为JSON(php xml转json)

7

对于想了解PHP将XML转换为JSON的读者,本文将提供新的信息,我们将详细介绍phpxml转json,并且为您提供关于Angular2:将XML转换为JSON、c#–从XML转换为JSON时更改属性

对于想了解PHP将XML转换为JSON的读者,本文将提供新的信息,我们将详细介绍php xml转json,并且为您提供关于Angular2:将XML转换为JSON、c# – 从XML转换为JSON时更改属性值、iOS中的XML转换为JSON、JS中将XML转为JSON对象的有价值信息。

本文目录一览:

PHP将XML转换为JSON(php xml转json)

PHP将XML转换为JSON(php xml转json)

如何解决PHP将XML转换为JSON?

我想到了。json_encode处理对象的方式与处理字符串的方式不同。我将该对象转换为字符串,现在可以正常工作。

foreach($xml->children() as $state)
{
    $states[]= array(''state'' => (string)$state->name); 
}       
echo json_encode($states);

解决方法

我正在尝试将xml中的xml转换为json。如果我使用简单的xml和json_encode进行简单的转换,则xml中的任何属性都不会显示。

$xml = simplexml_load_file("states.xml");
echo json_encode($xml);

所以我试图像这样手动解析它。

foreach($xml->children() as $state)
{
    $states[]= array(''state'' => $state->name); 
}       
echo json_encode($states);

状态的输出{"state":{"0":"Alabama"}}不是{"state":"Alabama"}

我究竟做错了什么?

XML:

<?xml version="1.0" ?>
<states>
    <state id="AL">     
    <name>Alabama</name>
    </state>
    <state id="AK">
        <name>Alaska</name>
    </state>
</states>

输出:

[{"state":{"0":"Alabama"}},{"state":{"0":"Alaska"}

var dump:

object(SimpleXMLElement)#1 (1) {
["state"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#3 (2) {
  ["@attributes"]=>
  array(1) {
    ["id"]=>
    string(2) "AL"
  }
  ["name"]=>
  string(7) "Alabama"
}
[1]=>
object(SimpleXMLElement)#2 (2) {
  ["@attributes"]=>
  array(1) {
    ["id"]=>
    string(2) "AK"
  }
  ["name"]=>
  string(6) "Alaska"
}
}
}

Angular2:将XML转换为JSON

Angular2:将XML转换为JSON

我想将我从Web API响应中收到的 XML转换为Angular 2中的 JSON.该应用程序是在Nativescript中开发的.无法找到解决方案.
我找到了一个非常棒的包,让这个非常简单.

xml2js

对我来说,我在角度2应用程序中,但在节点端.

npm install xml2js --save

它就像传递这样的xml一样简单,

var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml,function (err,result) {
    console.dir(result);
});

在我的应用程序中,我有一个xml文件并像这样使用它,

var fs = require('fs');
var parseString = require('xml2js').parseString;

function requestCreditReport(callback) {
    fs.readFile('./credit-api/response.xml','utf8',data) {
        if (err) return callback(err);
        parseString(data,callback);
    });
}

See this jsfiddle

我希望这有帮助.

c# – 从XML转换为JSON时更改属性值

c# – 从XML转换为JSON时更改属性值

在一个项目中,我使用Tsql FOR XML从DB获取一些数据.在所有表中,Date字段的minimun值设置为01/01/1900.

那是因为空值不允许作为一个无法改变的内部政治.

使用xml结果我需要将其转换为JSON并将其序列化为客户端.

为此,我正在使用:

string jSonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,Newtonsoft.Json.Formatting.None,true);

好;现在我需要将每个01/01/1900日期转换为DateTime.MinValue(01/01/0001),同时转换为JSON;我怎么处理这个?

解决方法

UPDATE – 修改后的代码,适用于任何值为01/01/1900的节点/属性.

我会在转换为JSON之前处理XML文档.如果您的日期值是节点或属性值,这是LinqPad示例.由于我不知道你的XML数据结构只是简单的例子:

void Main()
{
    // IF IT IS NODE VALUE
    var xml = @"<data>
        <objectA>
            <dateValueA>01/01/1900</dateValueA>
            <dateValueB>01/01/1971</dateValueB>
        </objectA>
        <objectB>
            <dateValueA>01/01/2002</dateValueA>
            <dateValueB>01/01/1900</dateValueB>
            <dateValueZ>01/01/2011</dateValueZ>
        </objectB>
        <objectC>
            <dateValueA>01/01/1910</dateValueA>
            <dateValueB>01/01/2012</dateValueB>
            <dateValueC>01/01/1900</dateValueC>
        </objectC>
    </data>";

    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(xml);

    var nodes = xmlDoc.SelectNodes("//*[text()='01/01/1900']");
    foreach(XmlNode node in nodes)
    {
        node.InnerText = "01/01/0001";
    }

    string jSonString = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,true);

    "// IF IT IS NODE VALUE - RESULTS".Dump();
    jSonString.Dump();

    // IF IT IS ATTRIBUTE VALUE
    var xmlAttr = @"<data>
        <objectA dateValueA='01/01/1900' dateValueB='01/01/1900' dateValueC='01/01/2011' />
        <objectB dateValueB='01/01/2011' someOtherDate='01/01/1900' />
        <objectC dateValueC='01/01/1900' dontChangeThisDate='05/04/1923' />
    </data>";

    var xmlDocAttr = new XmlDocument();
    xmlDoc.LoadXml(xmlAttr);

    var nodesAttr = xmlDoc.SelectNodes("//*[@*='01/01/1900']");
    for(var i=0; i < nodesAttr.Count; i++)
    {
        foreach(XmlAttribute attrib in nodesAttr[i].Attributes)
        {
            if (attrib.Value == "01/01/1900")
            {
                attrib.Value = "01/01/0001";
            }
        }
    }

    string jSonStringAttr = Newtonsoft.Json.JsonConvert.SerializeXmlNode(xmlDoc,true);

    "// IF IT IS ATTRIBUTE VALUE - RESULTS".Dump();
    jSonStringAttr.Dump();

}

结果:

// IF IT IS NODE VALUE - RESULTS
{"objectA":{"dateValueA":"01/01/0001","dateValueB":"01/01/1971"},"objectB":{"dateValueA":"01/01/2002","dateValueB":"01/01/0001","dateValueZ":"01/01/2011"},"objectC":{"dateValueA":"01/01/1910","dateValueB":"01/01/2012","dateValueC":"01/01/0001"}}

// IF IT IS ATTRIBUTE VALUE - RESULTS
{"objectA":{"@dateValueA":"01/01/0001","@dateValueB":"01/01/0001","@dateValueC":"01/01/2011"},"objectB":{"@dateValueB":"01/01/2011","@someOtherDate":"01/01/0001"},"objectC":{"@dateValueC":"01/01/0001","@dontChangeThisDate":"05/04/1923"}}

这对你有用吗?

iOS中的XML转换为JSON

iOS中的XML转换为JSON

我需要将 XML响应转换为 JSON.

我的XML响应:

<commands>
<command id="0" name="GetAPPsProducts">
  <command_parameters>
    <command_parameter id="0" name="APPs_Code">ATAiOS</command_parameter>
  </command_parameters>
  <command_result>
    <apps_products>
      <apps_products id="1">
        <apps_code>ATAiOS</apps_code>
        <apps_product_id>2</apps_product_id>
        <brand_id>2</brand_id>
        <brand_desc>Generic</brand_desc>
        <brand_product_id>2</brand_product_id>
        <product_id>001-7</product_id>
        <descrizione>MyTravelApp</descrizione>
      </apps_products>
    </apps_products>
  </command_result>
</command>

我正在使用本网站的XMLReader支持文件:

XMLReader

我正在使用此代码将XML转换为JSON

NSError *parseError = nil;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
NSLog(@" %@",xmlDictionary);

我收到了JSON响应:

commands =         {
        command =             {
            "command_parameters" =                 {
                "command_parameter" =                     {
                    id = 0;
                    name = "APPs_Code";
                    text = "\n  \n    \n      \n        ATAiOS";
                };
                text = "\n      ";
            };
            "command_result" =                 {
                "apps_products" =                     {
                    "apps_products" =                         {
                        "apps_code" =                             {
                            text = "\n      \n        \n          \n            ATAiOS";
                        };
                        "apps_product_id" =                             {
                            text = "\n            2";
                        };
                        "brand_desc" =                             {
                            text = "\n            Generic";
                        };
                        "brand_id" =                             {
                            text = "\n            2";
                        };
                        "brand_product_id" =                             {
                            text = "\n            2";
                        };
                        descrizione =                             {
                            text = "\n            MyTravelApp";
                        };
                        id = 1;
                        "product_id" =                             {
                            text = "\n            001-7";
                        };
                        text = "\n          ";
                    };
                    text = "\n        ";
                };
                text = "\n      ";
            };
            id = 0;
            name = GetAPPsProducts;
            text = "\n    ";
        };
        text = "\n  ";
    };
    text = "\n  \n";
};

我需要这样的回应:

{
  "commands": {
    "command": {
      "-id": "0","-name": "GetAPPsProducts","command_parameters": {
        "command_parameter": {
          "-id": "0","-name": "APPs_Code","#text": "ATAiOS"
        }
      },"command_result": {
        "apps_products": {
          "apps_products": {
            "-id": "1","apps_code": "ATAiOS","apps_product_id": "2","brand_id": "2","brand_desc": "Generic","brand_product_id": "2","product_id": "001-7","descrizione": "MyTravelApp"
          }

我在线转换时得到这个回应.如何获得这样的回应

提前致谢.

解决方法

NSError *parseError = nil;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:testXMLString error:&parseError];
NSLog(@" %@",xmlDictionary);

此代码不会将任何内容转换为JSON.它给你一个NSDictionary.您需要从字典中实际创建JSON数据.尝试这个大小.

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:xmlDictionary 
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@",error);
} else {
    Nsstring *jsonString = [[Nsstring alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",jsonString);
}

JS中将XML转为JSON对象

JS中将XML转为JSON对象

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script> var $xml = jQuery.noConflict(); </script>
<script type="text/javascript" src="http://www.jsons.cn/Down/jquery.json2xml.js"></script>
<script type="text/javascript" src="http://www.jsons.cn/Down/jquery.xml2json.js"></script>

  

//获取xml对象
    var loadXML = function () {
        xmlFile = "../Test.xml";
        var xmlDoc;
        if (window.ActiveXObject) {
            xmlDoc = new ActiveXObject('Microsoft.XMLDOM');//IE浏览器
            xmlDoc.async = false;
            xmlDoc.load(xmlFile);
        }
        else if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) { //火狐浏览器
            //else if (document.implementation && document.implementation.createDocument) {//这里主要是对谷歌浏览器进行处理
            xmlDoc = document.implementation.createDocument('', '', null);
            xmlDoc.load(xmlFile);
        }
        else { //谷歌浏览器
            var xmlhttp = new window.XMLHttpRequest();
            xmlhttp.open("GET", xmlFile, false);
            xmlhttp.send(null);
            if (xmlhttp.readyState == 4) {
                xmlDoc = xmlhttp.responseXML.documentElement;
            }
        }
        return xmlDoc;
    }
    // 首先对xml对象进行判断
    //var checkXMLDocObj = function (xmlFile) {
    //    var xmlDoc = loadXML(xmlFile);
    //    if (xmlDoc == null) {
    //        alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
    //        window.location.href = '../err.html';
    //    }
    //    return xmlDoc;
    //}
    var xml = loadXML();
    //转为json对象
    var json_obj = $xml.xml2json(xml.outerHTML);
    alert(json_obj.data.length);
var json={};
var xml_content = $.json2xml(json);//json装XML对象

  

 

我们今天的关于PHP将XML转换为JSONphp xml转json的分享已经告一段落,感谢您的关注,如果您想了解更多关于Angular2:将XML转换为JSON、c# – 从XML转换为JSON时更改属性值、iOS中的XML转换为JSON、JS中将XML转为JSON对象的相关信息,请在本站查询。

本文标签: