0

XML ファイルからノード値を取得する際に問題が発生しています

私のXMLは次のようになります。

<item>
   <item1><Description>test</Description></item1>
   <item2><Description>test2</Description></item2>
   <item3><Description>test3</Description></item3>
</item>

そして、Item2 > Description から「test2」を取得しようとしています。

アラート メッセージ ボックスに xml ファイルを表示できますが、探している値を取得できないようです。

私はJavaScriptでこれをやろうとしていますが、これまでのところ私は次のことを思いつきました:

function get_item()
{
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }


      xmlhttp.onreadystatechange=function()
       {

       if (xmlhttp.status==200)
         {
         //alert(xmlhttp.responseText);
          xmlDoc = xmlhttp.responseText;

            var item = xmlDoc.getElementsByTagName("Description")[0]; 
                item = item.childNodes.length ? item.childNodes[0].nodeValue : "" ;

             alert(item)

         } else
         {
         alert('Panel not communicating.Reason: '+xmlhttp.status);
         }
       }



    xmlhttp.open("POST","http://192.168.0.5/xml_file.xml",false);

    xmlhttp.send();
}

私が削除した場合:

var item = xmlDoc.getElementsByTagName("Description")[0]; 
                    item = item.childNodes.length ? item.childNodes[0].nodeValue : "" ;

アラートを次のように変更します。

alert(xmlDoc)

それは私のXMLファイルを警告するので、私のxmlファイルを読んでいることはわかっていますが、値を取得できません。

私は何か間違ったことをしていますか、それともこの値を取得するためのより良い方法はありますか?

(これにはjQueryを使用したくありません)

4

2 に答える 2

2

Use xmlhttp.responseXML instead of xmlhttp.responseText, I think there might be some issue with older versions of IE though, in which case you can try

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(xmlhttp.responseText); 
于 2012-11-22T06:32:46.487 に答える
0

この関数を使用して XML を解析し、このリンク (http://www.hiteshagrawal.com/javascript/javascript-parsing-xml-in-javascript) を使用できます。

    function readXML()
    {
       if(xmlDoc.readyState == 4)
       {
        //Using documentElement Properties
        //Output company
        alert("XML Root Tag Name: " + xmlDoc.documentElement.tagName);

        //Using firstChild Properties
        //Output year
        alert("First Child: " + xmlDoc.documentElement.childNodes[1].firstChild.tagName);

    //Using lastChild Properties
    //Output average
    alert("Last Child: " + xmlDoc.documentElement.childNodes[1].lastChild.tagName);

    //Using nodeValue and Attributes Properties
    //Here both the statement will return you the same result
    //Output 001
    alert("Node Value: " + xmlDoc.documentElement.childNodes[0].attributes[0].nodeValue);
    alert("Node Value: " + xmlDoc.documentElement.childNodes[0].attributes.getNamedItem("id").nodeValue);

    //Using getElementByTagName Properties
    //Here both the statement will return you the same result
    //Output 2000
    alert("getElementsByTagName: " + xmlDoc.getElementsByTagName("year")[0].attributes.getNamedItem("id").nodeValue);

    //Using text Properties
    //Output John
    alert("Text Content for Employee Tag: " + xmlDoc.documentElement.childNodes[0].text);

    //Using hasChildNodes Properties
    //Output True
    alert("Checking Child Nodes: " + xmlDoc.documentElement.childNodes[0].hasChildNodes);
}
于 2012-11-22T06:37:05.420 に答える