2015-06-05 44 views
0

我有麻烦试图找出如何从一个XML文件中使用JavaScript,看起来像得到一个值:从XML获得值在JavaScript

<Network> 
    <Local> 
     <Name>Name 1</Name> 
     <IP>192.168.0.1</IP> 
    </Local> 
    <Network1> 
     <Name>Test</Name> 
     <IP>192.168.0.2</IP> 
    </Network1> 
    <Network2> 
     <Name>Demo</Name> 
     <IP>192.168.0.3</IP> 
    </Network2> 
</Network> 

我想获得的价值是名称网络1这是“测试”

我曾尝试使用下面的代码尝试,但似乎无法得到它的工作..

xmlDoc=xmlhttp.responseXML; 

    var Name1 = xmlDoc.getElementsByTagName("Name")[1]; 
     Name1 = Name1.childNodes.length ? Name1.childNodes[0].nodeValue : "" ; 

    var Name2 = xmlDoc.getElementsByTagName("Name")[2]; 
     Name2 = Name2.childNodes.length ? Name2.childNodes[0].nodeValue : "" ; 

    alert(Name1); //should alert 'Test' 
    alert(Name2); //should alert 'Demo' 

我做错了什么?

+1

您是否收到任何错误? – Nit

+0

您可以在'xmlDoc = xmlhttp.responseXML;' –

回答

0

正如我们下面所看到的,由于您有一个实际的XML节点,因此您的代码片段可以正常工作。所以你的bug必须在别的地方。

var xmlString = "<Network><Local><Name>Name 1</Name><IP>192.168.0.1</IP></Local><Network1><Name>Test</Name><IP>192.168.0.2</IP></Network1><Network2><Name>Demo</Name><IP>192.168.0.3</IP></Network2></Network>"; 
 
var xml = $.parseXML(xmlString); 
 
var nodes = xml.getElementsByTagName("Name"); 
 
var nameNode = nodes[1]; 
 
var nameString = nameNode.childNodes.length ? nameNode.childNodes[0].nodeValue : "" ; 
 
alert(nameString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

这是有可能的,例如,您xmlDoc是不是字符串,你检查它的类型?

请注意,我在这里简单地使用了jQuery来解析XML字符串,您可以轻松使用vanilla Javascript。

+0

[responsexml]之后记录/提醒'typeof xmlDoc'的值(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest -responsexml) - 返回一个文档对象 –

+0

@ArunPJohny它也可能在各种场合返回null。 – Nit

+0

嗨,我希望不要使用jQuery – Aaron