我使用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值的单引号替换为double
此代码
console.log($($.parseXML('<Root><Text Title=\'my "best" text\'><![CDATA[ Yes & No ]]></Text></Root>')).find('Root').html());
返回<Text Title="my "best" text"></Text>
*我可以将<![CDATA[
替换为<Cdata>
来解决此问题,但由于&
而发生错误。
可能是由xml-&gt; html trasforming引起的问题更多。
我如何保留所有XML&#34;按原样#34;并浏览DOM?
我更喜欢使用JQuery,因为我的代码的结果是用户的API,他们想要使用它=)
P.S。这是VSCode扩展(Node.js)
感谢您提供任何解决方案!
UPD
主要问题是我需要来自字符串的原始XML (它是有效的)及其所有引号,CDATA等。
答案 0 :(得分:0)
主要问题是我需要从字符串中获取原始XML (它是有效的)及其所有引号,CDATA等。
XPath并不处理词汇XML,它在解析后用于XML的树表示。树表示消除了保持不相关的区别,例如属性的顺序,单引号或双引号的选择,以及是否要转义特殊字符的决定,例如&#34;&amp;&#34;使用实体引用或CDATA部分。这是一个刻意的政策,因为它认为应用程序不应该关心这些差异。所以你可能运气不好。
但是如果你解释为什么你(认为你)需要访问原始的词汇XML,那么我们可能会找到一种不同的方式来满足这个要求。