在JavaScript中从DOM创建格式正确的XML

时间:2012-03-13 13:17:36

标签: javascript jquery xml serialization

我在处理DOM文档(或其中的节点)时遇到了麻烦,并将其序列化为格式正确的xml。我需要这样做作为工具,我将上传文档的一部分,只理解XML而不是HTML,其中包含不正确的封闭元素。作为一个例子,我正在抓(在众多中)http://studentlund.se,它展示了img元素未被关闭的问题。

例如,如果我在chromes控制台中执行以下操作:

$('<div>').append($('body ul:first li:last')).html()

我会收到:

<li><a href="http://studentlund.se/feed/"><img src="http://studentlund.se/wordpress/wp-
content/themes/studentlund/pics/rss.png" alt="RSS"></a></li>

img元素未关闭,因此我的xml解析器将失败。

如果我使用XMLSerializer:

n = $('body ul:first li:last').get(0)
new XMLSerializer().serializeToString(n)

我会得到相同的,格式不正确的XML:

<li><a href="http://studentlund.se/feed/"><img src="http://studentlund.se/wordpress/wp-content/themes/studentlund/pics/rss.png" alt="RSS"></a></li>

我想要的只是能够以正确格式的XML字符串转储节点的RAW DOM,以便我可以将它与我的XML工具一起使用,这可能吗?

1 个答案:

答案 0 :(得分:1)

尝试创建一个XML文档,然后将其序列化为字符串,如下所示:

n = $('body ul:first li:last').get(0);
var doc = document.implementation.createDocument('', '', null);
doc.appendChild(n);
var xml = new XMLSerializer().serializeToString(doc);