好学IT学院:IT信息技术分享交流平台
来源:互联网  作者:本站整理  发布时间:2008-08-13  ★★★加入收藏〗〖手机版
Firefox中的XML DOM探讨
摘要:现在我们来看看Firefox中的XMLDOM实现,Firefox的开发人员采用更为标准的方法,将其作为JavaScript实现的一部分。Mozilla确保所有基于Gecko的浏览器的所有平台都支持XMLDOM。…

2. 在Firefox中获取XML数据

尽管存在这样那样的不同,但IE和Firefox中用于获取文档中XML数据的大多数属性和方法是一致的。正如在IE中,可以使用documentElement属性来获取文档的根元素,例如:

var oroot = oXmlDom.documentElement;

Firefox同样支持W3C标准属性,包括childNodes、firstChild、lastChild、nextSibling、nodeName、nodeType、nodeValue、ownerDocument、parentNode和previousSibling。不幸的是,对于微软专有的text和xml属性,Firefox并不支持,不过可以利用其他方法来模拟该属性的行为。

大家应该还记得,text属性返回了当前节点的内容,或者是当前节点及其子节点的内容。这不仅仅返回当前节点的文本,还有所有子节点的文本,因此要模拟该功能实现是十分容易的。下面这个简单的函数就能够完成该功能,该函数唯一的参数是一个节点:

function getText(oNode) {
  var sText = "";
  for (var i = 0; i < oNode.childNodes.length; i++) {
     if (oNode.childNodes[i].hasChildNodes()) {
         sText += getText(oNode.childNodes[i]);
     } else {
         sText += oNode.childNodes[i].nodeValue;
     }
  }
  return sText;
}

在getText()函数中,sText变量用来保存获取的所有文本。接着对oNode的子节点使用for循环进行遍历,检查每个子节点是否包含子节点。如果有子节点,那么就将其childNode传给getText()函数,并进行同样的处理;如果没有子节点,那么将当前节点的nodeValue加到字符串中(对文本节点而言,这只是文本字符串)。处理了所有子节点后,该函数返回变量sText。

IE中的xml属性将存放对当前节点包含的所有XML进行序列化的结果。在Firefox中,提供了一个名为XMLSerializer对象来完成这一功能。该对象提供一个使用JavaScript可访问的serializeToString()方法,使用该方法可以对XML数据进行序列化。

function serializeXml(oNode) {
  var oSerializer = new XMLSerializer();
  return oSerializer.serializeToString(oNode);
}

serializeXml()函数以XML节点作为参数,创建一个XMLSerializer对象,并将该节点传给serializeToString()方法。该方法将向调用者返回XML数据的字符串表示。

对于节点操作的DOM方法,Firefox与IE大致相同。参见“在IE中操作DOM”小节。

Visual Basic变量、常数和数据类型及过程概述
  变量、常数和数据类型概述在 Visual Basic 环境下进行计算时,常常需要临时存储数据。例如,可能想要计算几个值,将它们进行…
  • 好学考试H5触屏版开放内测
  • 好学触屏公众号虎力全开、杨帆起航!