我有一个奇怪的要求,我需要获取一些xml并重新编写它,以便将文本节点包装在CDATA中(这是用于不允许正常转义的客户端的)。
似乎所有普通的XML库dom4j,jdom,java xml都没有对此的内置支持。有任何想法吗?我可以为此使用XSLT吗?
我不太清楚。我将从这里开始:
<foo>This has an & escaped value</foo>
我需要做的是将其转换为:
<foo><![CDATA[This has an & escaped value]]></foo>
-戴夫
只要a)您需要输出的所有文本都在元素中,b)您只关心文本节点,c)您知道所有包含文本的元素的名称,并且d,您就可以使用XSLT完成此操作)可以将所有这些输出元素中的任何文本作为CDATA发出。如果所有这些情况都成立,那么您可以编写一个标识转换并将此元素添加到其中:
<xsl:output method="xml" cdata-section-elements="elm1 elm2 elm3..."/>
请参阅有关此主题的W3C XSLT建议。