XML DOM 遍历节点树
遍历 (Traverse) 意味着在节点树中进行循环或移动。
实例
下面的例子使用 XML 文件 books.xml。
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <bookstore>
- <book category="children">
- <title lang="en">Harry Potter</title>
- <author>J K. Rowling</author>
- <year>2005</year>
- <price>29.99</price>
- </book>
- <book category="cooking">
- <title lang="en">Everyday Italian</title>
- <author>Giada De Laurentiis</author>
- <year>2005</year>
- <price>30.00</price>
- </book>
- <book category="web">
- <title lang="en">Learning XML</title>
- <author>Erik T. Ray</author>
- <year>2003</year>
- <price>39.95</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>
- </bookstore>
函数 loadXMLString(),位于外部 JavaScript 中,用于加载 XML 文件。
遍历一棵节点树
循环 <book> 元素的所有子节点。
<html>
<head>
<script type="text/javascript" src="/example/xdom/loadxmlstring.js"></script>
</head>
<body>
<script type="text/javascript">
text="<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
xmlDoc=loadXMLString(text);
// documentElement always represents the root node
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{
document.write(x[i].nodeName);
document.write(": ");
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}
</script>
</body>
</html>
遍历节点树
您经常需要循环 XML 文档,比如:当你需要提取每个元素的值时。
这个过程叫作“遍历节点树”。
下面的例子循环 <book> 的所有子节点,并显示它们的名称和值:
- <html>
- <head>
- <script type="text/javascript" src="loadxmlstring.js"></script>
- </head>
- <body>
- <script type="text/javascript">
- text="<book>";
- text=text+"<title>Harry Potter</title>";
- text=text+"<author>J K. Rowling</author>";
- text=text+"<year>2005</year>";
- text=text+"</book>";
- xmlDoc=loadXMLString(text);
- // documentElement always represents the root node
- x=xmlDoc.documentElement.childNodes;
- for (i=0;i<x.length;i++)
- {
- document.write(x[i].nodeName);
- document.write(": ");
- document.write(x[i].childNodes[0].nodeValue);
- document.write("<br />");
- }
- </script>
- </body>
- </html>
输出:
- title: Harry Potter
- author: J K. Rowling
- year: 2005
例子解释:
- loadXMLString() 把 XML 字符串载入 xmlDoc 中
- 获取根元素的子节点
- 输出每个子节点的名称,以及文本节点的节点值