2012-03-13 16 views
1

我遇到了麻烦取DOM文档(或其中的节点)并将其序列化为格式正确的xml。我需要这样做,因为我将上传文档的一部分的工具仅用于理解XML,而不用HTML,因为它的不正确封闭的元素。作为一个例子,我目前正在刮(http://studentlund.se),其中显示我的img元素没有被关闭的问题。从JavaScript中创建正确格式化的XML

例如,如果我执行下面的铬合金控制台:

$('<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> 

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

回答

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); 
+0

真棒,那工作!谢谢! – topfs2 2012-03-14 09:53:45