使用 $.xml2Json 返回一个复杂的对象

Posted

技术标签:

【中文标题】使用 $.xml2Json 返回一个复杂的对象【英文标题】:Using $.xml2Json return a complicated object 【发布时间】:2013-01-21 00:24:36 【问题描述】:

我有这个代码:

$.ajax(
    type: "GET",
    url: trgUrl,
    success: function (data)
    
        var xml= $.parseXML(data);
                               
        var obj= $.xml2json(xml);

        //....
    
 );

data 可以是这样的:

 "<name> Mike </name>"

现在,问题是在使用$.xml2json(xml)之后,为了显示我需要写的名字:

 alert(obj.name.value); // Mike

而不仅仅是:

 alert(obj.name);    // object object

换句话说:$.xml2json&lt;name&gt; 的内容转换为另一个对象(而不是使其成为直接字符串)

我该如何解决这个问题?有人遇到过这个问题吗?

【问题讨论】:

尝试在 ajax 调用中将dataType 设置为'xml' 并跳过$.parseXml 部分。直接传递数据对象。我自己用过xml2json,没有这个问题。 我试过了,但得到了相同的结果。你用过 xml2json() 还是 $.xml2json() ? 很确定是$.xml2json,但我要等到明天我回去工作时才能检查.. 非常感谢您的帮助。 jsfiddle.net/rB4Dy这是我使用的版本,请试用。 【参考方案1】:

修改插件如下:

// Add element value
if(node.childElementCount == 0 && node.textContent != null && node.textContent != "") 
         /* comment out ".value" */
         result[node.nodeName]/*.value */= node.textContent.trim();

演示:http://jsfiddle.net/ycN37/

如果节点有子节点,这可能会产生问题,这可能是作者首先创建对象的原因

【讨论】:

但是你的解决方案能解决这个问题吗(关于你的最后一句话)? 取决于你的 xml 的样子。你试过了吗?为什么在对象中使用value 属性这么难? 我的 xml 比我使用的简单示例要复杂得多,而且我已经编写了函数来处理转换后的对象,只是它的行为不像我希望的那样。无论如何,您发现的内容与我的问题一致(我没有想到,也没有在我的 ajax 代码中做错什么,这是一个开始......)。

以上是关于使用 $.xml2Json 返回一个复杂的对象的主要内容,如果未能解决你的问题,请参考以下文章

php如何以post形式发送xm并返回xmll数据

使用 Javascript 将 XML 转换为 JSON(并返回)

使用 Javascript 将 XML 转换为 JSON(并返回)

使用 Javascript 将 XML 转换为 JSON(并返回)

python xml2json

python xml2json