我有一个奇怪的要求,我需要获取一些 xml 并重新编写它,以便将文本节点包装在 CDATA 中(这是针对不允许正常转义的客户端)。
似乎没有任何普通的 XML 库 dom4j、jdom、java xml 对此有任何内置支持。有任何想法吗?我可以为此使用 XSLT 吗?
我不是很清楚。以下是我要开始的内容:
<foo>This has an & escaped value</foo>
我需要做的是将其转换为:
<foo><![CDATA[This has an & escaped value]]></foo>
-戴夫
最佳答案
您可以使用 XSLT 来完成此操作,只要 a) 您需要输出的所有文本都在元素中,b) 您只关心文本节点,c) 您知道包含文本的所有元素的名称, 和 d) 可以将所有这些输出元素中的任何文本作为 CDATA 发出。如果所有这些情况都是真实的,那么您可以编写恒等式转换并将此元素添加到其中:
<xsl:output method="xml" cdata-section-elements="elm1 elm2 elm3..."/>
参见 the W3C XSLT recommendation关于这个问题。
关于java - 将 xml 转换为在文本周围包含 CDATA 的最佳方法(在 Java 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/800786/