2012-06-08 132 views
0

我有一個看起來像這樣的一個簡單的XML文件:基於元素的值從XML文件中提取文本?

<?xml version="1.0" ?> 
<devices> 

<device> 
<name>Inside</name> 
<value>67.662498</value> 
</device> 

<device> 
<name>Outside</name> 
<value>69.124992</value> 
</device> 

</devices> 

我想提取「外」使用JavaScript的溫度(值)。以下是我迄今爲止:

<script type="text/javascript"> 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.open("GET","data.xml",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

document.getElementById("name").innerHTML= 
xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue; 
document.getElementById("value").innerHTML= 
xmlDoc.getElementsByTagName("value")[0].childNodes[0].nodeValue; 
</script> 

當我運行這個HTML文件中,它拉的名字「內部」,其溫度值並沒有外界溫度值。我只是想能夠運行這個,並有「69.124992」作爲價值。我需要添加什麼來解析此文件,以便僅查找名稱爲「Outside」的設備?

回答

0

您當前的實現是剛開的名稱和值的第一次出現,並顯示值,而是爲什麼不循環

var names = xml.getElementsByTagName('name'); 
for (var iDx = 0; iDx < names.length; iDx++) { 
    if (names[iDx].childNodes[0].nodeValue == 'Outside') { 
     jQuery('#name').text(names[iDx].childNodes[0].nodeValue); 
     jQuery('#value').text(xml.getElementsByTagName('value')[iDx].childNodes[0].nodeValue); 
     break; 
    } 
} 

JSFiddle

+0

但是,這將拉動所有名稱和值,和我真的希望此代碼只根據「name」元素的值拉取一個值。換句話說,我希望這隻顯示「Outside」的溫度。 我也在用這個HTML代碼來顯示數值:

Value:
Alligator

+0

更新了我的文章對此有幫助嗎? – mprabhat

+0

我通過加載特定索引號的值來解決我自己的問題。我使用了以下內容:http://www.w3schools.com/dom/tryit.asp?filename=try_dom_index – Alligator