将 xml 转换为在文本周围包含 CDATA 的最佳方法(在 java 中)

Dav*_*ave 3 java xml

我有一个奇怪的要求,我需要获取一些 xml 并重新编写它,以便将文本节点包装在 CDATA 中(这是针对不允许正常转义的客户端)。

似乎任何普通的 XML 库 dom4j、jdom、java xml 都没有对此有任何内置支持。有任何想法吗?我可以为此使用 XSLT 吗?

我不是很清楚。我将从以下内容开始:

<foo>This has an &amp; escaped value</foo>
Run Code Online (Sandbox Code Playgroud)

我需要做的是将其转换为:

<foo><![CDATA[This has an & escaped value]]></foo>
Run Code Online (Sandbox Code Playgroud)

-戴夫

Rob*_*ney 5

您可以使用 XSLT 来完成此操作,只要 a) 您需要输出的所有文本都在元素中,b) 您只关心文本节点,c) 您知道包含文本的所有元素的名称,并且 d )可以将所有这些输出元素中的任何文本作为 CDATA 发出。如果所有这些情况都是正确的,那么您可以编写一个恒等转换并向其中添加以下元素:

<xsl:output method="xml" cdata-section-elements="elm1 elm2 elm3..."/>
Run Code Online (Sandbox Code Playgroud)

请参阅有关此主题的W3C XSLT 建议