<?
XML DOM读取节点信息遇到问题总结:
1:NodeList: 使用节点的childNodes属性或者document对象的getElementsByTagName()方法,就会返回一个包含节点列表的NodeList
2: 在 XML DOM 中,节点的关系被定义为节点的属性:
· parentNode
· childNodes
· firstChild
· lastChild
· nextSibling
· previousSibling
3:遍历XML节点列表的方法
(1)通过使用 getElementsByTagName() 方法
(2)通过循环(遍历)节点树
(3)通过利用节点的关系在节点树中导航
1:通过getElementsByTagName方法
//通过getElementsByTagName的方法访问节点
//通过length来循环一个节点列表
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
//取得节点的NodeName为title的所有节点
for (i=0;i<x.length;i++) {
document.write(x[i].childNodes[0].nodeValue);
//循环输出每个title子节点的文本节点的值
document.write("<br />");
}
2.1:通过循环根节点树的方法
//循环根节点的子节点,同时节点是元素节点的方法遍历节点
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
//获得根元素的所有子节点,该文档中的根节点为bookstore
for (i=0;i<x.length;i++)
{
if (x[i].nodeType==1)
{//如果子节点是元素节点,则输出节点的NodeName
document.write(x[i].nodeName);
document.write("<br />");
}
}
2.2通过循环根节点的方法,并取得文本节点的值
//遍历String类型的XML
<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);
x=xmlDoc.documentElement.childNodes;
//得到根节点book下的所有子节点的NodeList
for (i=0;i<x.length;i++)
{
document.write(x[i].nodeName);
//输出子节点的NodeName
document.write(": ");
document.write(x[i].childNodes[0].nodeValue);
//输出子节点的文本节点的文本值
document.write("<br />");
}
</script>
</body>
</html>
3:通过节点之间的关系在节点树中进行导航
//通过节点之间的关系,在节点之间进行导航
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
//得到第一个book节点的所有子节点
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
//得到第一个book节点的第一个子节点
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
{
document.write(y.nodeName + "<br />");
}
y=y.nextSibling;
//把y设置成y的下一个同级节点
}