如何使用JavaScript以跨浏览器的方式将DOM序列化为XML文本?
我有一个XML对象(使用如何使用JavaScript以跨浏览器的方式将DOM序列化为XML文本?,javascript,xml,dom,serialization,Javascript,Xml,Dom,Serialization,我有一个XML对象(使用XMLHTTPRequest的responseXML加载)。我已经修改了对象(使用jQuery),并希望将其存储为字符串中的文本 在Firefox等人中,显然有一种简单的方法可以做到这一点: var xmlString = new XMLSerializer().serializeToString( doc ); (来自) 但是如何在IE6和其他浏览器中做到这一点呢(当然不破坏Firefox)?你可以在InternetExlporer中使用doc.xml 你会得到这样的
XMLHTTPRequest
的responseXML
加载)。我已经修改了对象(使用jQuery),并希望将其存储为字符串中的文本
在Firefox等人中,显然有一种简单的方法可以做到这一点:
var xmlString = new XMLSerializer().serializeToString( doc );
(来自)
但是如何在IE6和其他浏览器中做到这一点呢(当然不破坏Firefox)?你可以在InternetExlporer中使用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;
}
找到了。谢谢。。。经过两天的搜索,我终于找到了这个。(我花了一段时间才意识到.xml根本不适用于FF/Chrome,我以为我做错了什么。)Webkit目前有一个bug(例如在Chrome 19中),并且不会返回正确的xml:xmlNode=document.createElement('img');xmlNode.src=“test.png”xmlNode.alt=“test”(新的XMLSerializer()).serializeToString(xmlNode);返回:“@cburgmer,它不是xmlnode@Esailija我不明白,那是什么?我希望XMLSerializer将xmlNode序列化为@cburgmer(注意后面的斜线)。这是一个html节点,您使用html文档创建了它。XML节点没有像
.src
这样的属性。使用:console.dir(document.implementation.createDocument(null,“xml”,null.createElement(“img”))查看实际xml元素的内容。