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

标签 java xml

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

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

我不是很清楚。以下是我要开始的内容:

<foo>This has an &amp; 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/

相关文章:

java - Android 崩溃并且崩溃报告未显示在 Android Studio 控制台中

xml - 如何生成 XML?

java - 在运行时更改 xml 或布局

java - 在eclipse插件开发中添加或删除项目中的库

java - 对于这个简单的情况,我应该使用同步块(synchronized block)吗?

java - 对象从列表中删除自身的最有效方法

java - Android JSON 解析英镑符号会出现什么?

android - 按钮上的阴影颜色取决于 XML 中的状态 - Android

c# - xml 对象中缺少信封标记

java - 使用 ExpandableListView 时将菜单栏放在屏幕底部