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

    DOM解析过程中浏览器差异

    Mozilla和IE浏览器都支持W3C的DOM规范。

    不过,在Mozilla的DOM与IE的DOM之间仍然存在着一些差异。最重要的不同之处是它们对空白文本节点的处理方式。当XML产生时,在节点之间常常会包含空白字符。Internet Explorer浏览器在使用node.childNodes[]时不会包含这些这些空白节点。而在Mozilla中,这些节点会存在于此数组中。

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

    下面的片断会提示根元素拥有多少个子节点:

    xmlDoc.load("books.xml");
    var x=xmlDoc.documentElement.childNodes;alert(x.length)for (i=0;i< x.length;i++)
      {
      document.write(x[i].nodeType);
      document.write("< br />");
      }
    

    TIY

    Internet Explorer会忽略节点之间产生的空白文本节点(例如换行字符),而Mozilla不会这样。因此,在上面的例子中,Mozilla浏览器会提示出9个子节点,而Internet Explorer会提示4个子节点。

    如需遍历子元素并忽略这些文本节点,您可以对节点的类型进行检查。元素节点的类型是1,文本节点的类型是3,注释节点的类型是8。如果要忽略文本节点,您可以仅仅处理除节点类型3和节点类型8以外的节点:

    xmlDoc.load("books.xml");
    var x=xmlDoc.documentElement.childNodes;for (var i=0;i< x.length;i++)
      {   if ((x[i].nodeType!=3)&""(x[i].nodeType!=8))
        {
        //Do not process text nodes or comment nodes     document.write(x[i].nodeName);
        document.write("< br />");
        }
      } 
    

    TIY

    The best way to only process element nodes is to iterate through the child nodes and only process those with a node type of 1:

    xmlDoc.load("books.xml");
    var x=xmlDoc.documentElement.childNodes;for (var i=0;i< x.length;i++)
      { 
      if (x[i].nodeType==1)
        { 
        //Process only element nodes
        document.write(x[i].nodeName);
        document.write("< br />");
        } 
      }
    

    请访问我们的节点类型参考手册,获得完整的节点类型参考。

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