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

How do I serialize a DOM to XML text, using JavaScript, in a cross browser way?

提问人:Eero 提问时间:9/4/2008 最后编辑:Alexander ElginEero 更新时间:2/8/2016 访问量:26315

问:

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

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

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

(来自 Rosettacode )

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

JavaScript XML DOM 序列化

评论


答:

35赞 Huppie 9/4/2008 #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;
}

在这里找到它。

评论

0赞 Marcel Popescu 9/5/2011
谢谢。。。经过两天的搜索,我终于找到了这个。(我花了一段时间才意识到 .xml 根本不适用于 FF/Chrome,我以为我做错了什么。
0赞 cburgmer 6/3/2012
Webkit 目前有一个错误(例如在 Chrome 19 中),并且不会返回正确的 XML: xmlNode = document.createElement('img');xmlNode.src = “测试.png” xmlNode.alt = “测试” (新的 XMLSerializer()).serializeToString(xmlNode);返回: “<img src=”test.png“ alt=”test“>”
0赞 Esailija 7/20/2012
@cburgmer那不是 XML 节点
0赞 cburgmer 7/24/2012
@Esailija我不明白,那是什么?我希望 XMLSerializer 将 xmlNode 序列化为 <img src... />(注意尾部斜杠)
0赞 Esailija 7/24/2012
@cburgmer它是一个 html 节点,则您使用 html 文档创建了它。XML 节点没有类似 的属性。看看实际的 xml 元素有什么:.srcconsole.dir( document.implementation.createDocument( null, "xml", null ).createElement("img") )