如何使用 JavaScript 以跨浏览器的方式将 DOM 序列化为 XML 文本?

IT技术 javascript xml dom serialization
2021-03-04 08:57:14

我有一个 XML 对象(使用XMLHTTPRequest's加载responseXML)。我已经修改了对象(使用 jQuery)并希望将其作为文本存储在字符串中。

在 Firefox 等人中显然有一种简单的方法可以做到这一点:

var xmlString = new XMLSerializer().serializeToString( doc );

(来自rosettacode

但是如何在IE6 和其他浏览器中做到这一点(当然,不破坏 Firefox)?

1个回答

您可以在 internet exlporer 中使用 doc.xml。

你会得到这样的东西:

function xml2Str(xmlNode) {
   try {
      // Gecko- and Webkit-based browsers (Firefox, Chrome), Opera.
      return (new XMLSerializer()).serializeToString(xmlNode);
  }
  catch (e) {
     try {
        // Internet Explorer.
        return xmlNode.xml;
     }
     catch (e) {  
        //Other browsers without XML Serializer
        alert('Xmlserializer not supported');
     }
   }
   return false;
}

在这里找到

@Esailija 我不明白,那是什么?我希望 XMLSerializer 将 xmlNode 序列化为 <img src... /> (注意尾部斜杠)
2021-04-15 08:57:14
@cburgmer 它是一个 html 节点,您使用 html 文档创建了它。XML 节点没有像.src. 看看实际的 xml 元素有什么:console.dir( document.implementation.createDocument( null, "xml", null ).createElement("img") )
2021-04-18 08:57:14
@cburgmer 这不是一个 xml 节点
2021-04-19 08:57:14
Webkit 当前有一个错误(例如在 Chrome 19 中)并且不会返回正确的 XML: xmlNode = document.createElement('img'); xmlNode.src = "test.png" xmlNode.alt = "test" (new XMLSerializer()).serializeToString(xmlNode); 返回:"<img src="test.png" alt="test">"
2021-04-23 08:57:14
谢谢... 经过两天的搜索,我终于找到了这个。(我花了一段时间才意识到 .xml 根本不适用于 FF/Chrome,我以为我做错了什么。)
2021-05-11 08:57:14