JAXB Java to XML: как не печатать элементы примитивного типа по умолчанию

StackOverflow https://stackoverflow.com/questions/1040146

Вопрос

Первая попытка использовать этот классный сайт - после поиска в течение 2 часов: Итак, у меня есть Java Bean (который я могу только аннотировать, но не изменять), и мне нужно сопоставить его с XML, используя JAXB. Я хотел бы, чтобы типы примитивов не печатались, если они содержат язык по умолчанию или пользовательские значения по умолчанию.

Как уже говорилось, я не могу изменить Java-бин и поэтому изменить типы примитивов на их аналоги Object Wrappers.

Как ты это делаешь лучше всего?

Пример бина:

class Foo {  
public String name;  
// -1 is user defined default, to indicate field is not set.  
public long someIdx=-1;  
// ...  
}  

Foo f = new Foo();  
f.name = "Duke";

для этого экземпляра я хотел бы получить следующий вывод:

<foo><name>Duke</name></foo>
Это было полезно?

Решение

Вы можете использовать JAXB XmlAdapters. Доступно с JAXB 2.0 (JDK 6.0)

Используя адаптер, вы оставляете bean-компонент отдельно и комментируете / меняете совершенно другой класс. Это не должно быть проблемой в вашем случае.

Смотрите мой ответ здесь

см. сообщение в блоге автора JAXB

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top