Выражение разметки в файлах свойств Java XML: CDATA против экранированных тегов - PullRequest
2 голосов
/ 03 февраля 2010

Я читаю и пишу файлы свойств Java в формате XML.Многие из значений свойства имеют встроенный 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 ]

2 голосов
/ 03 февраля 2010

Не эквивалентно, но текстовое значение, которое вы получаете, вызывая getText(), совпадает.

Однако я бы посоветовал вам отказаться от Properties в пользу реального XML, проанализированного JAXB - это здорово, вам понравится.

Не нашел ни одного хорошего, так что, по крайней мере, это:

Объект -> XML: здесь

Подробное руководство Sun: http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing.html

1 голос
/ 05 февраля 2010

Когда файлы загружаются в память в объекте Properties, нет разницы между двумя указанными вами форматами, как ответил Ондра Жижка. Разделы CDATA - это способ избежать блока текста вместо экранирования каждого символа в нем.

Я бы сам рассмотрел формат файла свойств, отличного от xml, вы по-прежнему будете видеть теги в необработанных файлах, но символы новой строки необходимо будет экранировать.

0 голосов
/ 03 февраля 2010

Да, у вас могут возникнуть некоторые проблемы, в зависимости от того, как используются данные.

Например, если вы используете его на HTML-странице, A<br>B будет печататься как

A

B

Но A&lt;br&gt;B будет отображаться как

A<br>B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...