如何获取XML文件中节点的值.代码无效

How to obtain a value of a node in a XML file. Not working code

本文关键字:节点 无效 代码 文件 XML 何获取 获取      更新时间:2023-09-26

我有一个html代码,它应该创建一个xmlDoc对象,从文件中读取XML代码,获取节点的值并将其打印在屏幕上。但是,下面的代码会被执行,但不会读取值。我想我得到的只是空字符串。我试过了。firstChild,结果是一样的:

<text> is :)

介于"<text>和"之间的是:)"我希望"我的孩子1号"。谢谢你的帮助。

html代码:

<!DOCTYPE html>
<html>
<head>
    <title>Test html</title>
    <script src="loadxmldoc.js"></script>
</head>
<body>
    <script>
        var xmlDoc = loadXMLDoc("test_xml.xml");
        var x = xmlDoc.getElementsByTagName("child")[0].childNodes[0];
        var txt = x.nodeValue;
        document.write("&lt;txt&gt; is " + txt + "    :)");
    </script>
</body>
</html>

XML test_XML.XML代码:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
    <children>
        <child id="1">
            <txt>My child no 1.</txt>
        </child>
        <child id="2">
            <txt>My child no 2.</txt>
        </child>
        <child id="3">
            <txt>My child no 3.</txt>
        </child>
        <child id="4">
            <txt>My child no 4.</txt>
        </child>
    </children>
</root>

和loadXMLDoc.js文件中的loadXMLDoc函数:

function loadXMLDoc(filename) {
    if (window.XMLHttpRequest) {
        xhttp=new XMLHttpRequest();
    } else { // code for IE5 and IE6
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET",filename,false);
    xhttp.send();
    return xhttp.responseXML;
}

这不是我问题的全部答案,但问题已部分解决。下面的代码可以工作,但我必须使用getElementsByTagName函数来获取html标记,例如,我想避免使用firstChild。不管怎样,这才是有效的。

<!DOCTYPE html>
<html>
<head>
    <title>Test html</title>
    <script src="loadxmldoc.js"></script>
</head>
<body>
    <script>
        var xmlDoc = loadXMLDoc("test_xml.xml");
        var children = xmlDoc.getElementsByTagName("children")[0];
        var childn = children.getElementsByTagName("child")[0];
        var x = childn.getElementsByTagName("txt")[0];
        document.write("&lt;txt&gt; is " + x.firstChild.nodeValue + " :)");
    </script>
</body>
</html>