【发布时间】:2018-03-29 09:01:33
【问题描述】:
我正在使用 JQuery 来解析 XML 字符串,因为我需要 在 DOM 中导航然后并获取更改的内容。我认为 JQuery 是完成这项任务的最佳工具。
rawXML 字符串:
<Root>
<Text Title='my "best" text'><![CDATA[ Yes & No ]]></Text>
</Root>
这是我获取对象的方式:
let xml = $($.parseXML(rawXML)).find('Root');
所以我在获取 html() 函数的内容时遇到了一些麻烦:
1) 它会删除所有带有文本的CDATA*
2) 它将 attr 值的单引号替换为双引号
这段代码
console.log($($.parseXML('<Root><Text Title=\'my "best" text\'><![CDATA[ Yes & No ]]></Text></Root>')).find('Root').html());
返回<Text Title="my &quot;best&quot; text"></Text>
*我可以通过将<![CDATA[ 替换为<Cdata> 来解决此问题,但由于& 而发生错误。
可能是xml->html转换导致的问题较多。
如何“按原样”保留我的所有 XML 并在 DOM 中导航?
我更喜欢使用 JQuery,因为我的代码结果是为想要使用它的用户提供 API =)
附:这是 VSCode 扩展(Node.js)
感谢您的任何解决方案!
UPD
主要问题是我需要从字符串中获取原始 XML(它是有效的),以及它的所有引号、CDATA 等。
【问题讨论】:
-
我想大多数问题都是由您的 XML 无效这一事实引起的。
-
@RoryMcCrossan,我的 XML 示例是有效的,不是吗?
-
现在您添加了缺少的
[,尽管我建议您坚持使用双引号来分隔值并转义这些值,如下所示:<?xml version="1.0" encoding="UTF-8"?><Root><Text Title="my &quot;best&quot; text"><![CDATA[Yes & No]]</Text></Root> -
&quot;是'的完全有效的 HTML 表示,我无法重现第二个问题。您能否编辑问题并添加一个完整的 sn-p 以显示该问题? -
或者更好的是,完全摆脱不必要的 CDATA 并自己编码
&:<?xml version="1.0" encoding="UTF-8"?><Root><Text Title="my &quot;best&quot; text">Yes &amp; No</Text></Root>
标签: javascript jquery xml cdata