好学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”小节。

思科交换机提供的三种交换模式
  交换机在交换数据帧时可以选择不同的模式来满足网络和用户的需要,思科的交换机提供三种交换模式:快速转发模式快速转发(Fast-for…
  • 好学触屏公众号虎力全开、杨帆起航!
  • 好学考试H5触屏版开放内测