小编典典

将XML转换为在文本周围具有CDATA的最佳方法(Java)

java

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

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

我不太清楚。我将从这里开始:

<foo>This has an &amp; escaped value</foo>

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

<foo><![CDATA[This has an & escaped value]]></foo>

-戴夫


阅读 498

收藏
2020-11-26

共1个答案

小编典典

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

<xsl:output method="xml" cdata-section-elements="elm1 elm2 elm3..."/>

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

2020-11-26