我通过AJAX responseText获得了一些HTML代码,长度为350-400行。它已作为字符串存储在变量text
中,我想将其解析为XML。但是,在解析时会删除一些内容。结果以script
部分结束,并且没有看到代码中的body
部分。
var xml = (new DOMParser()).parseFromString(text, "text/xml");
alert(xml.querySelector("body"));
console.log(text);
console.log((new XMLSerializer()).serializeToString(xml));
对于console.log(text)
的结果,它返回完整的代码。
但console.log((new XMLSerializer()).serializeToString(xml))
的结果返回了一个非常不完整的结果,结果如下:
for (i = 0; i </script></head></html>
警报一显示null
,所以我很确定自解析过程以来内容已丢失。
谁能告诉我如何解决它?
HTML并不总是有效的XML。从您的部分输出看来,您正在尝试解析HTML。在这种情况下,您应该将parseFromString
的第二个参数更改为"text/html"
而不是"text/xml"
。在此之后,XML序列化应该可以正常工作。
此外,要获取序列化字符串,您还可以访问从documentElement.outerHTML
方法返回的Document对象上的属性parseFromString
。