Что такое эквивалент Jaxb значения Text node?

Я хочу преобразовать класс, который выглядит так...

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>.

Ответы

Ответ 1

Я не уверен на 100%, но попробуйте использовать аннотацию @XmlValue вместо @XmlElement.

Ответ 3

В этой документации написано:

Q. Как заставить Marshaller генерировать блоки CDATA?

а. Эта функция недоступна непосредственно из JAXB, но вы можете настроить XMLSerializer Apache Xerces-J для создания блоков CDATA. Для более детального изучения рассмотрите пример приложения JaxbCDATASample.java.

(btw, это не отвечает на ваш конкретный вопрос, но поскольку заголовок вопроса вводит в заблуждение, и это первый результат google для jaxb CDATA, я отвечаю на немного другой вопрос)

Ответ 4

JAXB не поддерживает маршалинг/маршалинг в/из типов CDATA xml.