独上高楼网站
  •    你所在位置:首页 VS.netXMLXML基础教程〉XML基础教程:XML DOM 节点列表(Node List) 和 指定节点地图(NamedNodeMap)
  • XML基础教程:XML DOM 节点列表(Node List) 和 指定节点地图(NamedNodeMap)
  • 作者:佚名  文章来源:ttp://www.w3school.com.cn  发布日期:2008-03-06  浏览次数:293
  • 打印这篇文章
  • XML DOM 节点列表(Node List) 和 指定节点地图(NamedNodeMap)

    nodeName、nodeValue以及nodeType包含有关于节点的信息。

    DOM Node List 和 NamedNodeMap

    本节为您讲解NodeList和NamedNodeMap的概念,以及它们之间的区别。

    DOM Node List

    当我们使用类似childNodes或getElementsByTagName()之类的属性或方法时,就会收到一个NodeList对象。

    NodeList对象代表一个有序的节点列表。

    可通过它们的索引号码(由0起始)来访问节点列表中的这些节点。

    注释:在一个节点列表中,其中的节点是按照它们在XML中被规定的顺序来返回的。

    请看下面这个XML文件:books.xml

    现在,我们要通过使用方法getElementsByTagName("title"),来创建一个"books.xml"中所有< title>元素的节点列表。下面这幅图表示所返回的节点列表:

    下面这个代码片段可从第一个< title>元素中取得文本:

    getElementsByTagName("title")[0].childNodes[0].nodeValue

    输出:

    Everyday Italian

    取得节点列表的长度

    节点列表可保持其自身的更新。如果某个元素被删除或添加,那么列表会自动更新。

    节点列表有一个很有用的属性:length。length属性可返回某个节点列表中的节点数目。

    下面的代码片段可取得"books.xml"中< title>元素的数目:

    getElementsByTagName('title').length 

    输出:

    4

    当您了解到某个节点列表的长度后,就可以轻易地循环遍历这个列表,并提取您需要的值。

    下面的代码片段循环遍历所有的< title>元素,并输出它们的值:

    //the x variable will hold a NodeList
    var x=getElementsByTagName('title')for (i=0;i< x.length;i++)
      {
      document.write(x[i].childNodes[0].nodeValue)
      document.write("< br />")
      }
    

    输出:

    Everyday Italian
    Harry Potter
    XQuery Kick Start
    Learning XML
    

    DOM NamedNodeMap

    当我们对某个元素使用attributes属性时,就会收到一个NamedNodeMap对象。

    一个NamedNodeMap代表了属性节点的一个无序列表。

    可通过节点名称访问NamedNodeMap中的节点。

    注释:在一个NamedNodeMap中,节点不会以任何特别的顺序返回。

    取得NamedNodeMap的长度

    NamedNodeMap会保持自身的更新。如果某个元素被删除或添加,此列表也会被自动更新。

    NamedNodeMap也拥有length属性。length属性可返回列表中的节点数目。

    请看下面这个XML文件:books.xml

    下面的这个代码片段可取得"books.xml"中第一个< title>元素的属性数目:

    getElementsByTagName('title')[0].attributes.length 

    输出:

    1 

    取得NamedNodeMap中某个项目的值

    NamedNodeMap对象的getNamedItem()方法可被用来取回某个指定的节点。

    下面的代码片段向我们展示了如何输出每个< each>元素中"category"属性的值:

    xmlDoc=loadXMLDoc("books.xml");
    
    var x=xmlDoc.getElementsByTagName("book");
    
    for(i=0;i< x.length;i++)
      {
      //the attlist variable will hold a NamedNodeMap
      var attlist=x.item(i).attributes;
      var att=attlist.getNamedItem("category");
      document.write(att.value + "< br />")
      } 
    

    输出:

    COOKING
    CHILDREN
    WEB
    WEB
  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页