2013-03-20 82 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