Ответ 1
Я не уверен на 100%, но попробуйте использовать аннотацию @XmlValue
вместо @XmlElement
.
Я хочу преобразовать класс, который выглядит так...
public class Amenity {
public String id;
public String value;
}
в следующий XML, используя аннотации JaxB:
<amenity id="id-string-here">value-string-here</amenity>
Кто-нибудь знает, какую аннотацию использовать для переменной-члена value
, чтобы выполнить это? Самое близкое, что я получил до сих пор:
@XmlRootElement
public class Amenity {
@XmlAttribute
public String id;
@XmlElement
public String value;
}
К сожалению, этот подход не позволяет мне указать, что переменная-член value
не должна отображаться как ее собственный тег <value></value>
.
Я не уверен на 100%, но попробуйте использовать аннотацию @XmlValue
вместо @XmlElement
.
Похоже, что вопрос касался текстовых узлов, а не узлов CDATA, но вот ссылка на то, как EclipseLink JAXB (MOXy) обрабатывает CDATA:
В этой документации написано:
Q. Как заставить Marshaller генерировать блоки CDATA?
а. Эта функция недоступна непосредственно из JAXB, но вы можете настроить XMLSerializer Apache Xerces-J для создания блоков CDATA. Для более детального изучения рассмотрите пример приложения JaxbCDATASample.java.
(btw, это не отвечает на ваш конкретный вопрос, но поскольку заголовок вопроса вводит в заблуждение, и это первый результат google для jaxb CDATA
, я отвечаю на немного другой вопрос)
JAXB не поддерживает маршалинг/маршалинг в/из типов CDATA xml.