2012-01-13 88 views
0

如何使用JavaScript獲取我的xml數據的值。我訪問我的域名上的XML文件,並在客戶端查看它。通過javascript訪問XML數據

my.xml

<usr> 
    <uid trk="1234"> 
    <getThis>kdzbnya</getThis> 
    </uid> 
</usr> 

我想 「獲得OS 3.0」

sample.js

function alertThis(){ 
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     var xmlFile = "my.xml"; 
     xmlDoc.async="false"; 
     xmlDoc.load(xmlFile); 
     xmlObj=xmlDoc.documentElement; 
     try { 
      var v = ""; 
      $.each(xmlObj.childNodes, function(i, valThis) { 
       if(valThis.getAttribute("trk") == "1234"){ 
        v += valThis.getElementsByTagName('getThis').nodeValue; 
       } 
      }); 
      alert(v); 
     } 
     catch(e){ 
      alert(e); 
     } 
} 

的價值,但它返回undefined值。

+0

你知道在Firefox這不會工作的,對不對? – dbrin 2012-01-13 00:35:20

+0

@DmitryB是的,你的意思是activexObject,但我只在IE上工作,因爲它是用於Windows 7的小工具。 – 2012-01-13 00:37:43

回答

1

我看到你正在使用jQuery。

變化

v += valThis.getElementsByTagName('getThis').nodeValue 

v += $(valThis).find('getThis').text() 
+0

是的,謝謝!有用。是的,我必須使用jQuery,因爲我必須獲取很多數據。 – 2012-01-13 00:52:05

2

嘗試增加getElementsByTagName(...).nodeValue之間的.item(0)[0]

v += valThis.getElementsByTagName('getThis').item(0).nodeValue; 

你需要以此爲getElementsByTagName返回NodeList(它可以像一個Array)。該列表本身不具有nodeValue property,但其中的節點應該是。

+0

它返回null,也許是因爲我的jQuery代碼存在一些問題。 – 2012-01-13 00:50:43