Expressing markup in Java XML property files: CDATA vs. escaped tags
I am re开发者_Go百科ading and writing Java Properties files in XML format. Many of the property value have HTML embedded, which developers wrap in [[CDATA
elements like so:
<entry key="foo"><![CDATA[
<b>bar</b>
]]></entry>
However, when I use the Java API to load these properties and later write them back to XML, it doesn't wrap these entries in CDATA elements, but rather escapes the tags, like so:
<entry key="foo"><b>bar</b></entry>
Are these two formats equivalent? Am I introducing any potential problems by replacing CDATA with escaped tags?
Not equivalent, but the text value you get by calling getText()
is the same.
However, I would suggest you to abandon Properties
in favor of real XML parsed by JAXB - it's awesome, you'll like it.
Didn't found any nice one, so at least these:
Object -> XML: here
Sun's verbose tutorial: http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing.html
When the files are loaded into memory in a Properties object there is no difference between the two formats you have shown, as Ondra Žižka an answer with. CDATA sections are a way to escape a block of text instead of escaping every character in it.
I would consider the non-xml property file format myself, you will continue to see the tags in the raw files, but newline characters would need to be escaped.
Yes you could be inducing some problems, depending on how the data is used.
For example if you use it in a HTML page, A<br>B
will print as
A
B
But A<br>B
will show as
A<br>B
精彩评论