Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$.xml2Json返回一个复杂的对象_Javascript_Jquery_Json_Jquery Plugins_Xml Parsing - Fatal编程技术网

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

Javascript 使用$.xml2Json返回一个复杂的对象,javascript,jquery,json,jquery-plugins,xml-parsing,Javascript,Jquery,Json,Jquery Plugins,Xml Parsing,我有以下代码: $.ajax({ type: "GET", url: trgUrl, success: function (data) { var xml= $.parseXML(data); { var obj= $.xml2json(xml); //.... } }); 而数据可以是这样的: "<name> Mike <

我有以下代码:

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

        //....
    }
 });
数据
可以是这样的:

 "<name> Mike </name>"
而不仅仅是:

 alert(obj.name);    // object object
换句话说,
$.xml2json
的内容转换为另一个对象(而不是直接字符串)


我如何修复该行为?有人有此问题吗?

修改插件如下:

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


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

尝试在ajax调用中将
数据类型设置为
'xml'
,并跳过
$.parseXml
部分。直接传递数据对象。我自己也使用过xml2json,没有这个问题。我尝试过,但得到了相同的结果。您是否使用了xml2json()或$.xml2json()?非常确定它是
$.xml2json
,但我要到明天回去工作时才能检查。非常感谢您的帮助。这是我使用的版本,请尝试一下。但是你的解决方案能解决这个问题吗(关于你的最后一句话)?取决于你的xml是什么样子的。你试过了吗?为什么在对象中使用
value
属性如此困难?我的xml比我使用的简单示例要复杂得多,而且我已经编写了处理转换对象的函数,只是它没有像我希望的那样工作。无论如何,您发现的问题与我的问题一致(我没有想象到这一点,我的ajax代码中也没有做错什么,这只是一个开始…)。
// Add element value
if(node.childElementCount == 0 && node.textContent != null && node.textContent != "") {
         /* comment out ".value" */
         result[node.nodeName]/*.value */= node.textContent.trim();
}