在Java XML属性文件中表示标记:CDATA与转义标记

时间:2010-02-03 04:24:03

标签: java xml properties

我正在以XML格式阅读和编写Java Properties文件。许多属性值都嵌入了HTML,开发人员将其包含在[[CDATA元素中,如下所示:

<entry key="foo"><![CDATA[
    <b>bar</b>
]]></entry>

但是,当我使用Java API加载这些属性并稍后将它们写回XML时,它不会将这些条目包装在CDATA元素中,而是转义标记,如下所示:

<entry key="foo">&lt;b&gt;bar&lt;/b&gt;</entry>

这两种格式是否相同?我是否通过使用转义标签替换CDATA来引入任何潜在问题?

3 个答案:

答案 0 :(得分:2)

不相同,但通过调用getText()获得的文本值是相同的。

但是,我建议你放弃Properties支持 JAXB 解析的真实XML - 它很棒,你会喜欢它。

没有找到任何好的,所以至少这些:

对象 - &gt; XML:here

Sun的详细教程:http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing.html

答案 1 :(得分:1)

当文件被加载到Properties对象的内存中时,你所显示的两种格式之间没有区别,正如OndraŽižka的回答。 CDATA部分是一种逃避文本块而不是转义其中每个字符的方法。

我会自己考虑非xml属性文件格式,您将继续看到原始文件中的标记,但需要转义换行符。

答案 2 :(得分:0)

是的,您可能会遇到一些问题,具体取决于数据的使用方式。

例如,如果您在HTML页面中使用它,A<br>B将打印为

A

B

A&lt;br&gt;B将显示为

A<br>B