- 你所在位置:首页 〉VS.net〉XML〉XML基础教程〉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 />"); }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 />"); } }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 />"); } }请访问我们的节点类型参考手册,获得完整的节点类型参考。
- 打印这篇文章
- 与本文主题相关的文章
-
- 返回首页
