Я пытаюсь сериализовать класс с использованием JAXB, который имеет некоторые поля CDATA, и некоторые поля, которые содержат специальные символы, которые необходимо экранировать (включая < и>). Проблема в том, что я не могу заставить обработчик escape работать правильно для обоих этих случаев.Escape XML-символы без экранирования метки CDATA
Использования CDATA адаптера Выборочного, если установка следующего свойства в моем ИАСЕ,
jaxbMarshaller.setProperty(CharacterEscapeHandler.class.getName(),
(CharacterEscapeHandler) (ch, start, length, isAttVal, out) -> out.write(ch, start, length));
я получаю:
<key1><![CDATA[Test]]></key1> # What I want
<key2>some_>_value</key2> # Invalid XML
Если удалить эту собственность и пусть JAXB обрабатывать свое собственное вытекание, Я получаю:
<key1><![CDATA[Test]]> # Not what I want
<key2>some_<_value</key2> # What I want
Но что мне нужно:
<key1><![CDATA[Test]]></key1>
<key2>some_<_value</key2>
Есть ли какие-либо способы, которыми я могу управлять функцией эвакуатора таким образом?
Насколько я понимаю, это все-таки дать мне неправильный результат, так как ' некоторые _> _ значение ' является недействительным XML. –