如何以跨浏览器的方式使用 JavaScript 将 DOM 序列化为 XML 文本?
Posted
技术标签:
【中文标题】如何以跨浏览器的方式使用 JavaScript 将 DOM 序列化为 XML 文本?【英文标题】:How do I serialize a DOM to XML text, using JavaScript, in a cross browser way? 【发布时间】:2010-09-07 19:00:28 【问题描述】:我有一个 XML 对象(使用 XMLHTTPRequest
的 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;
找到它here。
【讨论】:
谢谢...经过两天的搜索,我终于找到了这个。 (我花了一段时间才意识到 .xml 根本不适用于 FF/Chrome,我以为我做错了什么。) Webkit 当前有一个错误(例如在 Chrome 19 中)并且不会返回正确的 XML:xmlNode = document.createElement('img'); xmlNode.src = "test.png" xmlNode.alt = "test" (new XMLSerializer()).serializeToString(xmlNode);返回:“" @cburgmer 不是 xml 节点 @Esailija 我不明白,那是什么?我希望 XMLSerializer 将 xmlNode 序列化为 (注意尾部斜杠) @cburgmer 这是一个 html 节点,您使用 html 文档创建了它。 XML 节点没有像.src
这样的属性。看看实际的 xml 元素有什么:console.dir( document.implementation.createDocument( null, "xml", null ).createElement("img") )
以上是关于如何以跨浏览器的方式使用 JavaScript 将 DOM 序列化为 XML 文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 vanilla JavaScript 查找 div 的宽度?
以跨浏览器的方式查找视口的确切高度和宽度(无 Prototype/jQuery)