从JavaScript中获取XML的价值

时间:2015-06-05 05:23:03

标签: javascript xml

我在尝试使用看起来像这样的JavaScript的XML文件中获取值时遇到了麻烦:

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

我想从 Network1 中获取名称,这是&#39;测试&#39;

我尝试使用以下代码,但似乎无法正常运行..

    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 个答案:

答案 0 :(得分:0)

正如我们在下面看到的,假设您有一个实际的XML节点,那么您的代码片段就可以正常工作。因此,您的错误必须位于其他地方。

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可能是一个字符串,你检查过它的类型吗?

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