【问题标题】:Convert xml to json and format [duplicate]将xml转换为json并格式化[重复]
【发布时间】:2014-09-03 22:59:19
【问题描述】:

我正在使用 CTA API (http://www.transitchicago.com/developers/bustracker.aspx) 响应是 xml。我想在骨干集合中获取后转换为 json。响应如下所示:

<?xml version="1.0"?>
<bustime-response>
<route>
    <rt>1</rt>
    <rtnm>Bronzeville/Union Station</rtnm>
    <rtclr>#336633</rtclr>
</route>        
<route>
    <rt>2</rt>
    <rtnm>Hyde Park Express</rtnm>
    <rtclr>#993366</rtclr>
</route>        
</bustime-response>

我希望它看起来像这样:

[
  {
    "rt": "1",
    "rtnm": "Bronzeville/Union Station",
    "rtclr": "#336633"
  },
  {
    "rt": "2",
    "rtnm": "Hyde Park Express",
    "rtclr": "#993366"
  }
]

最好的方法是什么?

【问题讨论】:

标签: javascript xml json


【解决方案1】:

试试这个功能,对我来说效果很好:

xmlToJson = function(xml) {
var obj = {};
if (xml.nodeType == 1) {                
    if (xml.attributes.length > 0) {
        obj["@attributes"] = {};
        for (var j = 0; j < xml.attributes.length; j++) {
            var attribute = xml.attributes.item(j);
            obj["@attributes"][attribute.nodeName] = attribute.nodeValue;
        }
    }
} else if (xml.nodeType == 3) { 
    obj = xml.nodeValue;
}            
if (xml.hasChildNodes()) {
    for (var i = 0; i < xml.childNodes.length; i++) {
        var item = xml.childNodes.item(i);
        var nodeName = item.nodeName;
        if (typeof (obj[nodeName]) == "undefined") {
            obj[nodeName] = xmlToJson(item);
        } else {
            if (typeof (obj[nodeName].push) == "undefined") {
                var old = obj[nodeName];
                obj[nodeName] = [];
                obj[nodeName].push(old);
            }
            obj[nodeName].push(xmlToJson(item));
        }
    }
}
return obj;
 }

 var jsonText = JSON.stringify(xmlToJson(xmlDoc)); 

欲了解更多信息,请查看以下链接

http://davidwalsh.name/convert-xml-json

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2016-07-15
    • 2021-07-28
    • 2019-03-09
    相关资源
    最近更新 更多