如何在JavaScript和FireFox中获取innerXml或outerXml

时间:2012-03-18 17:07:18

标签: javascript xml firefox

使用IE时,以下工作 -

 alert("XML Root IE: " + xmlDoc.documentElement.tagName); // ok
 alert("Xml: " + xmlDoc.documentElement.xml);             // ok

但是对于FireFox,函数xml,innerxml,outerxml都是未定义的。

   alert("tagName: " + xmlDoc.documentElement.tagName);  // ok
   alert("Xml Content: " + xmlDoc.documentElement.xml);  // undefined
   alert("Xml innerxml: " + xmlDoc.documentElement.innerxml);  // undefined
   alert("Xml outerxml: " + xmlDoc.documentElement.outerxml);  // undefined

如何在FireFox上获取实际的XML? (我知道我正确读取了XML,因为“documentElement.tagName”在IE和FF上都返回正确)

谢谢,

Atara

编辑:这是相关的FF代码:

    var xmlDoc;

function fLoadXml() {
  // alert("fLoadXml()");
  if (window.ActiveXObject) { // IE
    fLoadXmlIE()
  } else if (document.implementation && document.implementation.createDocument) { // FF
    fLoadXmlFF()
  }
}

function fLoadXmlFF() {
   // alert("fLoadXmlFF()");
   xmlDoc = document.implementation.createDocument("","",null) ;
   xmlDoc.async = false;
   xmlDoc.onload = fReadXmlFF;
   var loaded = xmlDoc.load("myFile.xml");
   alert("loaded: " + loaded);
}

function fReadXmlFF() {
   alert("fReadXmlFF()");
   alert("tagName: " + xmlDoc.documentElement.tagName);
   alert("Xml Content: " + xmlDoc.documentElement.xml);  // undefined
   alert("Xml innerxml: " + xmlDoc.documentElement.innerxml);  // undefined
   alert("Xml outerxml: " + xmlDoc.documentElement.outerxml);  // undefined

}

2 个答案:

答案 0 :(得分:7)

发现它 - http://www.hiteshagrawal.com/javascript/convert-xml-document-to-string-in-javascript

解决方案:

function fReadXmlFF() {
   alert("tagName: " + xmlDoc.documentElement.tagName);  // ok
   strXml = (new XMLSerializer()).serializeToString(xmlDoc); // ok
   . . . 

答案 1 :(得分:1)

xml是一个仅限IE的属性,尝试其他类似ChildNodes和NodeValue的内容,请在此处查看:http://www.w3schools.com/dom/dom_document.asp