这一篇介绍加载到解析器后,JavaScript是如何访问节点的。
在详细介绍如何使用上面的方法前,我们来了解一下节点的主要属性。
documentElement 属性:XML 文档的根节点。
nodeName 属性:节点的名称(只读)。
nodeValue 属性:节点的值。
nodeType 属性:节点的类型。
childNodes 属性:返回子节点集合。
parentNode 属性:返回父节点。
firstChild 属性:返回第一个子节点。
lastChild 属性:返回最后一个子节点。
nextSibling 属性:返回下一个子节点。
previousSibling 属性:返回上一个子节点。
nodeName 属性
nodeName 属性规定节点的名称。- nodeName 是只读的
- 元素节点的 nodeName 与标签名相同
- 属性节点的 nodeName 是属性的名称
- 文本节点的 nodeName 永远是 #text
- 文档节点的 nodeName 永远是 #document
nodeValue 属性
nodeValue 属性规定节点的值。- 元素节点的 nodeValue 是 undefined
- 文本节点的 nodeValue 是文本自身
- 属性节点的 nodeValue 是属性的值
nodeType 属性
nodeType 属性规定节点的类型。nodeType 是只读的。
最重要的节点类型是:
元素类型 | 节点类型 |
---|---|
元素 | 1 |
属性 | 2 |
文本 | 3 |
注释 | 8 |
文档 | 9 |
您可以通过四种方法来访问节点:
1、通过getElementsById() 方法。
用法: var xNode = xmlDoc.getElementsById('ID') ;
解释:这个方法我想大家已经很熟悉了。就是如果XML里有个id='ID'的Node,那个就返回这个Node节点,否则返回null。
在得到这个Node后,就可以用上面的属性进行访问了。
ps: xmlDoc的定义可以在上一篇文章中找到。
2、通过getElementsByTagName() 方法。
用法:var arrNodes=xmlDoc.getElementsByTagName('TagName') ;
解释:这个方法是根据tagname返回一个数组。此方法最常用。
例子1:
//xml 内容: http://blog.youkuaiyun.com/avon520/archive/2008/11/20/3340927.aspx
var arrNodes=xmlDoc.getElementsByTagName("title");
for (i=0;i<arrNodes.length;i++)
{
alert(arrNodes[i].childNodes[0].nodeValue);
}
例子2:
// 获取第一个 <title> 元素节点的文本节点。注意,元素内的文本是元素的子节点,叫文本节点。
var xNode=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
alert(xNode.nodeValue); // 文本节点的值 。output "Everyday Italian"
3、通过循环(遍历)节点树。
这个方法没什么好说的,就是用for循环结合childNodes遍历所以的节点。
例子:
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)//只遍历了一层
{
document.write(x[i].nodeName);
document.write("<br />");
}
4、通过节点的关系在节点树中导航。
这个方法是根据当前节点得到parentNode 、firstChild、lastChild、nextSibling 、previousSibling 来移动。
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
document.write(y.nodeName + "<br />");
y=y.nextSibling;
}