2012-06-08 103 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