3

次のチュートリアルに従いました- http://davidwalsh.name/convert-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>  

ありがとう!

4

1 に答える 1

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> 
于 2013-03-20T08:23:44.573 に答える