Я читаю элементы с разделами CDATA из rss-канала, которые мне нужно преобразовать в действительный xml. Содержимое раздела CDATA в основном представляет собой допустимый xhtml, но иногда в атрибутах (url-адресах) появляются такие символы, как амперсанд.
Я могу использовать .replaceAll("&", "&")
, чтобы решить эту проблему, но если немного подумать, может случиться так, что в атрибутах или тексте появятся другие недопустимые символы.
CMS, в которую я импортирую элемент, не будет принимать разделы CDATA без настройки другой конфигурации для содержимого, поэтому мой вопрос: есть ли простой способ экранировать строку только для атрибутов и текста?
Я использую библиотеку jdom для управления xml после импорта.
Изменить: я проверил StringEscapeUtils apache, но это экранирование всей строки. Мне нужно что-то, что будет экранировать только значения атрибутов и текст внутри элементов.
.replaceAll("&", "&")
испортит все существующие объекты HTML. Например.<
станет&lt;
. - person Duncan Jones   schedule 05.09.2012