У меня есть объект, сгенерированный XJC, названным Product
. Я хочу установить product.currentPrice (a String)
быть £210
где £
обозначение денежной единицы (передал в откуда-либо в системе).
Проблема, JAXB выходит из моего амперсанда, таким образом, это производит £210
вместо этого. Как я заставляю его не сделать этого?
По умолчанию реализация маршаллера JAXB обычно экранирует символы. Чтобы изменить это поведение по умолчанию, вам нужно будет написать класс, реализующий интерфейс com.sun.xml.bind.marshaller.CharacterEscapeHandler
.
устанавливает этот обработчик в Marshaller
CharacterEscapeHandler escapeHandler = NoEscapeHandler.theInstance;
marshaller.setProperty("com.sun.xml.bind.characterEscapeHandler", escapeHandler);
. Вы можете просмотреть образцы, поставляемые с JAXB, образец с экранированием символов
Как насчет использования раздела CDATA для обертывания значение, а затем используйте реализацию JAXB, такую как EclipseLink MOXy , которая может обрабатывать CDATA?
Чтобы обрабатывать CDATA с помощью MOXy, см .: