2013-03-20 85 views
2

我也跟着下面的教程 - http://davidwalsh.name/convert-xml-json和得到的错误:问题与XML转换成JSON

Uncaught exception: TypeError: 'xml.hasChildNodes' is not a function. 

我不知道如何解决这个问题?许多人在网站上发布了同样的东西。但没有运气。

请帮忙。

代码在这里:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title>Welcome</title> 

<script type="text/javascript"> 
function myFun() 
{ 
    alert("hi.."); 
    var jsonText = JSON.stringify(xmlToJson("D:/Tech/data.xml")); 
    for(var i in jsonText) 
    { 
     alert(i); 
    } 
} 

// Changes XML to JSON 
function xmlToJson(xml) { 

    // Create the return object 
    var obj = {}; 

    if (xml.nodeType == 1) { // element 
     // do attributes 
     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) { // text 
     obj = xml.nodeValue; 
    } 

    // do children 
    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; 
}; 

</script> 

</head> 

<body onload="myFun()"> 
Hello 
</body> 
</html> 

而且data.xml中是一样的东西在这里:

<applications> 
<application id="backupparking"> 
    <toplevel /> 
<contexts> 
<context id="Idle" /> 
<context id="ABCD" /> 
<context id="EFGH" /> 
<context id="LMN"> 
<payload> 
    <member id="hi" type="string" /> 
    </payload> 
    </context> 
    </application> 
    </applications> 

谢谢!

+0

成立了小提琴,如果你想帮助。 – dfsq 2013-03-20 07:26:24

+0

我不是JavaScript专家,但不是你传递* filename *到xmlToJson方法吗?当然,你应该首先从磁盘读取XML到一个XML对象,然后,它可能会有相关的功能。 – shunty 2013-03-20 08:30:21

+0

@Sneha - 你必须将xml字符串提供给'xmlToJson'函数而不是xml文件路径... – CoderHawk 2013-03-20 08:30:42

回答

0

contexts标记未正确关闭。

尝试

<applications> 
<application id="backupparking"> 
    <toplevel /> 
<contexts /> 
<context id="Idle" /> 
<context id="ABCD" /> 
<context id="EFGH" /> 
<context id="LMN"> 
<payload> 
    <member id="hi" type="string" /> 
    </payload> 
    </context> 
    </application> 
    </applications> 

或者

<applications> 
<application id="backupparking"> 
    <toplevel /> 
<contexts> 
<context id="Idle" /> 
<context id="ABCD" /> 
<context id="EFGH" /> 
<context id="LMN"> 
<payload> 
    <member id="hi" type="string" /> 
    </payload> 
    </context> 
</contexts> 
    </application> 
    </applications> 
+0

这只是一个示例。我的XML文件被验证,并没有问题。它不是我感觉的问题:( – Smitha 2013-03-20 08:24:37