Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Выражение разметки в файлах свойств Java XML: CDATA и экранированные теги

Автор вопроса: Mike SicklerОтветов: 3

Я читаю и пишу файлы свойств Java в формате XML. Многие значения свойств имеют встроенный HTML, который разработчики заключают в элементы [[CDATA следующим образом:

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

Однако, когда я использую API Java для загрузки этих свойств, а затем записываю их обратно в XML, он не заключает эти записи в элементы CDATA, а скорее экранирует теги, например:

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

Эти два формата эквивалентны? Создаю ли я какие-либо потенциальные проблемы, заменяя CDATA экранированными тегами?

javaxmlproperties

Ответы

Ответ 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&lt;br&gt;B будет отображаться как

A<br>B

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы