循环遍历XML中的所有节点

时间:2014-02-26 22:12:27

标签: javascript html xml xslt xml-parsing

我需要一些关于JavaScript的帮助,我已经创建了一个XML文件,我将在JavaScript的帮助下创建一个遍历所有节点元素的循环。以下是我的XML文件,所以我需要一些帮助来打印所有节点名称和JavaScript的节点值,而不是JQUERY。


<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
    <book category="cooking">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="children">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="web">
        <title lang="en">XQuery Kick Start</title>
        <author>James McGovern</author>
        <author>Per Bothner</author>
        <author>Kurt Cagle</author>
        <author>James Linn</author>
        <author>Vaidyanathan Nagarajan</author>
        <year>2003</year>
        <price>49.99</price>
    </book>
    <book category="web" cover="paperback">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用浏览器内置xml parser来执行此操作。但是使用JSON和Javascript更方便。

var txt = "..."; // here is your xml as a string

if (window.DOMParser) {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(txt,"text/xml");
} else { // Internet Explorer
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(txt); 
}

然后您可以像使用DOM树一样使用xmlDoc进行操作。例如,让我们提醒所有标签名称和值:

var tags = xmlDoc.getElementsByTagName('*');
for (var i = 0; i < tags.length; i++) {
    alert(tags[i].nodeName + ' = ' + tags[i].firstChild.nodeValue);
}

或者可能XSLT可以帮助您(点击“自己动手”按钮查看它是如何工作的。)。这是将XML数据转换为html页面的方法。

相关问题