独上高楼网站
  •    你所在位置:首页 VS.netXMLXML基础教程〉XML基础教程:XML DOM 节点导航
  • XML基础教程:XML DOM 节点导航
  • 作者:佚名  文章来源:ttp://www.w3school.com.cn  发布日期:2008-03-06  浏览次数:228
  • 打印这篇文章
  • XML DOM 节点导航

    DOM 节点导航

    我们可以通过使用节点彼此间的关系在节点间进行导航:

    • parentNode
    • childNodes
    • firstChild
    • lastChild
    • nextSibling
    • previousSibling

    请看下面的XML文件:books.xml

    下面这幅图展示了节点树的一个部分,以及上面这个XML文件中节点间的关系:

    注释:Internet Explorer会忽略节点之间产生的空白文本节点(例如换行字符),而Mozilla不会这样。因此在下面的例子中,当我们使用firstChild、lastChild、nextSibling以及 previousSibling属性时,会使用一个函数来检测节点的类型。

    取得节点的首个子元素

    下面的代码片段可取得< bookstore>的首个子节点:

    //检测首个子节点是否是元素节点
    function get_firstchild(n)
      {
      var x=n.firstChild;
      while (x.nodeType!=1)
        {
        x=x.nextSibling;
        }
      return x;
      }
    
    xmlDoc=load("books.xml");
    
    var y=get_firstchild(xmlDoc.documentElement);
    
    document.write(y.nodeName); 
    

    以上代码的输出:

    book

    上面这个例子中的函数可检测第一个子节点的节点类型。

    元素节点的节点类型是1,因此如果首个子节点不是元素节点,它就会移至下一节点并检查此节点是否是元素节点。这个过程会持续到首个元素被找到为止。通过这个办法,我们在Internet Explorer和Mozilla中都会得到正确的结果。

    取得节点的前一个同级节点

    下面这个代码片段会取得第一个 < author>元素的前一个同级节点:

    //check if the previous sibling node is an element node
    function get_previoussibling(n)
      {
      var x=n.previousSibling;
      while (x.nodeType!=1)
        {
        x=x.previousSibling;
        }
      return x;
      }
    
    xmlDoc=load("books.xml");
    
    var x=xmlDoc.getElementsByTagName("author")[0];
    
    var y=get_previoussibling(x);
    
    document.write(y.nodeName);
    

    以上代码的输出:

    title

    上面这个例子中的函数可检测前一个同级节点的节点类型。

    假如前一个同级节点不是一个元素节点,它就会移至下一个前面的同级节点,并检查此节点是否是元素节点。这个过程会持续到前一个同级的元素节点被找到为止。通过这个方法,我们就可以在Internet Explorer和Mozilla中得到正确的结果。

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