DOM 节点列表

  • 定义和使用

    nodeName,nodeValue 和 nodeType 属性包含有关节点的信息。
    下面的示例使用XML文件books.xml
  • DOM节点列表

    使用 childNodes 或 getElementsByTagName() 之类的属性或方法时,将返回节点列表对象。
    节点列表对象代表节点列表,其顺序与 XML 中的顺序相同。
    使用从0开始的索引号访问节点列表中的节点。
    下图表示 “books.xml” 中 <title> 元素的节点列表:
    nodelist
    假设将 “books.xml” 加载到变量xmlDoc中。
    此代码片段返回 “books.xml” 中标题元素的节点列表:
    x = xmlDoc.getElementsByTagName("title");
    执行上述语句后,x是节点列表对象。
    以下代码片段从节点列表(x)中的第一个<title>元素返回文本:
    var txt = x[0].childNodes[0].nodeValue;
    尝试一下
    执行以上语句后,txt="中国历史手册"。
  • 节点列表长度

    节点列表对象使自己保持最新。 如果元素被删除或添加,列表将自动更新。
    节点列表的length属性是列表中节点的数量。
    此代码片段返回 “books.xml” 中<title>元素的数量:
    x = xmlDoc.getElementsByTagName('title').length;
    执行上述语句后,x 的值为4。
    节点列表的长度可用于遍历列表中的所有元素。
    此代码片段使用 length 属性循环遍历 <title> 元素的列表:
    x = xmlDoc.getElementsByTagName('title');
    xLen = x.length;
    
    for (i = 0; i <xLen; i++) {
        txt += x[i].childNodes[0].nodeValue) + " ";
    }
    尝试一下
    示例说明:
    假设 “books.xml” 已加载到 xmlDoc 中
    设置 x 变量以保存所有标题元素的节点列表
    从<title>元素收集文本节点值
  • DOM属性列表

    元素节点的 attribute 属性返回属性节点的列表。
    这称为命名节点映射,与节点列表类似,不同之处在于方法和属性上的差异。
    属性列表使自己保持最新状态。 如果删除或添加属性,列表将自动更新。
    此代码片段从“books.xml”中的第一个<book>元素返回属性节点的列表:
    x = xmlDoc.getElementsByTagName('book')[0].attributes;
    执行上面的代码后,x.length=是属性的数量,并且 x.getNamedItem() 可用于返回属性节点。
    此代码段获取书籍的“类别”属性的值和属性数量:
    x = xmlDoc.getElementsByTagName("book")[0].attributes;
    txt = x.getNamedItem("category").nodeValue + " " + x.length;
    尝试一下
    示例说明:
    假设 “books.xml” 已加载到 xmlDoc 中
    设置 x 变量以保存第一个<book>元素的所有属性的列表
    获取“类别”属性的值和属性列表的长度