在java中转义xml字符串

在java中转义xml字符串,java,xml,cdata,jdom,Java,Xml,Cdata,Jdom,我从rss提要中读取带有CDATA节的元素,需要将其转换为有效的xml。CDATA部分中的内容大部分是有效的xhtml,但有时属性(url)中会出现像符号和这样的字符 我可以使用.replaceAll(&“,“&;”)来解决这个问题,但向前一点考虑,可能会在属性或文本中显示其他无效字符 我要导入元素的CMS在没有为内容设置另一个配置的情况下不会接受CDATA节,因此我的问题是:是否有任何简单的方法来转义字符串,仅转义属性和文本 我正在使用jdom库在导入后操作xml 编辑:我已经签出了ap

我从rss提要中读取带有CDATA节的元素,需要将其转换为有效的xml。CDATA部分中的内容大部分是有效的xhtml,但有时属性(url)中会出现像符号和这样的字符

我可以使用
.replaceAll(&“,“&;”)来解决这个问题,但向前一点考虑,可能会在属性或文本中显示其他无效字符

我要导入元素的CMS在没有为内容设置另一个配置的情况下不会接受CDATA节,因此我的问题是:是否有任何简单的方法来转义字符串,仅转义属性和文本

我正在使用jdom库在导入后操作xml


编辑:我已经签出了apache的StringEscapeUtils,但这是对整个字符串的转义。我需要的东西只能转义属性值和元素内的文本。

Apache Commons为此提供了方便的函数:

当您使用JDOM时,它将自动正确地转义需要它的内容。您的CMS是否加载了JDOM的输出,或者您是否正在使用其他库来填充CMS

本质上,如果您有有效的XML输入,并且使用JDOM(来自org.jdom2.output.*)来输出数据,那么您将始终拥有良好的输出。。。。那么,你们在做什么来破坏输出呢


Rolf

.replaceAll(“&“,“&;”)将打乱任何现有的HTML实体。例如,
将成为
&;lt。看看这个链接,邓肯,这也是真的。StringEscapeUtils将对整个字符串进行转义,而这并不是我所要寻找的。我尝试过这个方法,不幸的是,它会转义整个字符串,包括周围的元素。我正在寻找只转义AttributeValue和文本的东西。CMS加载了JDOM的输出。问题是我并不总是有一个有效的SaxBuilder输入,因为一些属性值可能包括未转义的符号和…在这种情况下,JDOM将解码这些转义字符(或者您的SAX解析器将解码),您在JDOM中看到的将是未转义的,并且在输出时将重新转义。不确定我是否跟随您。JDOM SaxBuilder将不接受无效的(未转换的符号)XML字符串&;输入,然后对其进行解码。JDOM将看到just&然后,如果使用JDOM输出,JDOM将对&as&;重新编码;在输出中。现在,让我们看看这些角色是否在StackExchange的评论系统中幸存下来