Javascript 基于元素的值从XML文件中提取文本?

Javascript 基于元素的值从XML文件中提取文本?,javascript,xml,parsing,Javascript,Xml,Parsing,我有一个简单的XML文件,如下所示: <?xml version="1.0" ?> <devices> <device> <name>Inside</name> <value>67.662498</value> </device> <device> <name>Outside</name> <value>69.124992</value>

我有一个简单的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作为值。我需要添加什么来解析此文件,以便它只查找外部名称为的设备

您当前的实现只是获取名称和值的第一个匹配项并显示值,为什么不直接循环呢

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;
    }
}

但这会拉取所有的名称和值,我真的希望这段代码基于name元素的值只拉取一个值。换句话说,我想让它只显示室外的温度。我还使用这个HTML代码来显示value:value:我通过一个特定的索引号来加载值,从而解决了我自己的问题。我使用了以下方法: