【问题标题】:Some content lost while parsing string to xml将字符串解析为 xml 时丢失了一些内容
【发布时间】:2023-04-06 10:44:02
【问题描述】:

我通过 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,所以我很确定自解析过程以来内容已经丢失。

谁能告诉我怎么解决?

【问题讨论】:

  • 脚本是否包含 xml 不安全字符...例如 if (a &lt; b &amp;&amp; b &gt; c )
  • 看着i = 0; i...我猜是这样。 HTML 不是有效的 XML。
  • for 语句实际上应该是 for (i = 0; i &lt; xml.scripts.length; i++) 。整个脚本位于 之间。不就是当成innerXML文本吗?

标签: javascript xml xml-parsing


【解决方案1】:

HTML 并不总是有效的 XML。从您的部分输出看来,您正在尝试解析 HTML。在这种情况下,您应该将parseFromString 的第二个参数更改为"text/html" 而不是"text/xml"。在此之后,XML 序列化应该可以正常工作了。

此外,要获取序列化字符串,您还可以访问从 parseFromString 方法返回的 Document 对象上的属性 documentElement.outerHTML

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多