DOM 访问节点



  • 定义和使用

    使用DOM,您可以访问XML文档中的每个节点。
    下面的示例使用XML文件books.xml
  • 访问节点

    您可以通过三种方式访问节点:
    1. 通过使用 getElementsByTagName() 方法
    2. 通过遍历(遍历)节点树。
    3. 通过使用节点关系浏览节点树。
    getElementsByTagName() 返回具有指定标签名称的所有元素。
    语法:
    node.getElementsByTagName("tagname");
    
    
    以下示例返回x元素下的所有<title>元素:
    x.getElementsByTagName("title");
    
    
    请注意,上面的示例仅在x节点下返回<title>元素。 要返回XML文档中的所有<title>元素,请使用:
    xmlDoc.getElementsByTagName("title");
    
    
    其中xmlDoc是文档本身(文档节点)。
  • DOM节点列表

    getElementsByTagName() 方法返回节点列表。 节点列表是节点的数组。
    x = xmlDoc.getElementsByTagName("title");
    
    
    x中的<title>元素可以通过索引号访问。 要访问第三个<title>,您可以编写:
    y = x[2];
    
    
    注意:索引从0开始。
    length 属性定义节点列表的长度(节点数)。
    您可以使用 length 属性遍历节点列表:
    var x = xmlDoc.getElementsByTagName("title");
    for (i = 0; i <x.length; i++) {
      //为每个节点做某事
    }
    
    
    尝试一下
  • 节点类型

    XML文档的documentElement属性是根节点。
    节点的nodeName属性是该节点的名称。
    节点的nodeType属性是该节点的类型。
  • 遍历节点

    以下代码循环遍历根节点的子节点,这些子节点也是元素节点:
    txt = "";
    x = xmlDoc.documentElement.childNodes;
    
    for (i = 0; i <x.length; i++) {
      // Process only element nodes (type 1)
      if (x[i].nodeType == 1) {
        txt += x[i].nodeName + "<br>";
      }
    }
    
    
    尝试一下
    示例说明:
    • 假设您已将 "books.xml" 加载到 xmlDoc 中
    • 获取根元素的子节点(xmlDoc)
    • 对于每个子节点,请检查节点类型。 如果节点类型为 “1”,则它是一个元素节点
    • 如果节点是元素节点,则输出节点的名称
  • 导航节点关系

    以下代码使用节点关系导航节点树:
    x = xmlDoc.getElementsByTagName("book")[0];
    xlen = x.childNodes.length;
    y = x.firstChild;
    
    txt = "";
    for (i = 0; i <xlen; i++) {
      // Process only element nodes (type 1)
      if (y.nodeType == 1) {
        txt += y.nodeName + "<br>";
      }
      y = y.nextSibling;
    }
    
    
    尝试一下
    示例说明:
    • 假设您已将 "books.xml" 加载到 xmlDoc 中
    • 获取第一本书元素的子节点
    • 将 “y” 变量设置为第一本书元素的第一个子节点
    • 对于每个子节点(从第一个子节点“y”开始)
    • 检查节点类型。 如果节点类型为 “1”,则它是一个元素节点
    • 如果节点是元素节点,则输出节点的名称
    • 将 “y” 变量设置为下一个同级节点,然后再次运行循环