Я читаю и пишу файлы свойств Java в формате XML. Многие значения свойств имеют встроенный HTML, который разработчики заключают в элементы [[CDATA следующим образом:
<entry key="foo"><![CDATA[
<b>bar</b>
]]></entry>
Однако, когда я использую API Java для загрузки этих свойств, а затем записываю их обратно в XML, он не заключает эти записи в элементы CDATA, а скорее экранирует теги, например:
<entry key="foo"><b>bar</b></entry>
Эти два формата эквивалентны? Создаю ли я какие-либо потенциальные проблемы, заменяя CDATA экранированными тегами?
Ответ 1 · рейтинг 2 · Ondra Žižka
Не эквивалентно, но текстовое значение, которое вы получаете, вызывая getText(), такое же.
Тем не менее, я бы посоветовал вам отказаться от Properties в пользу настоящего XML, обработанного JAXB - это здорово, вам понравится.
Не нашел ни одного хорошего, так что по крайней мере эти:
Объект -> XML: здесь
Подробное руководство Sun: http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing.html
Ответ 2 · рейтинг 1 · Community
Когда файлы загружаются в память в объекте свойств, нет никакой разницы между двумя форматами, которые вы показали, как ответил Ондра Жижка. Разделы CDATA - это способ экранировать блок текста вместо экранирования каждого символа в нем.
Я бы сам рассмотрел формат файла свойств, отличный от xml, вы по-прежнему будете видеть теги в необработанных файлах, но символы новой строки необходимо будет экранировать.
Ответ 3 · Suraj Chandran
Да, вы можете вызвать некоторые проблемы, в зависимости от того, как используются данные.
Например, если вы используете его на HTML-странице, A<br>B будет напечатано как
A
B
Но A<br>B будет отображаться как
A<br>B