JAXB маршаллинг / демаршаллинг без какой-либо конфигурации - PullRequest
2 голосов
/ 22 декабря 2010

Я пытаюсь маршалировать / демаршировать класс Java ValueObject через JAXB.

Для этого я обнаружил, что для этого требуется файл XML-схемы и класс ObjectFactory. это может быть автоматически создано муравьем.

Если это так, кажется, что он может получить маршалированный / не маршалированный БЕЗ XML-схемы file и ObjectFactory, потому что они могут быть созданы автоматически.

Но пока я исследовал, JAXB каким-то образом не обеспечивает этого.

Ты знаешь, как это сделать?

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

JAXB не требует схемы, он предназначен для запуска из объектов Java. Затем вы добавляете аннотации для настройки сопоставления с XML. Ниже приведены несколько полезных примеров для начала:

Посетите мой блог, чтобы найти больше примеров JAXB, которые начинаются с объектов Java:

0 голосов
/ 24 декабря 2010

Я не эксперт в JAXB, но вы можете создать демаршаллер с помощью этого конструктора:

РЕДАКТИРОВАТЬ - извините, неправильный код xD

JAXBContext jaxbContext = JAXBContext.newInstance(Class1.class, Class2.class, ...);
Marshaller marshaller = jaxbContext.createMarshaller();

В этом вопросе

Использовать демаршаллинг JAXB в Weblogic Server

Вы можете видеть, что я использую автоматически сгенерированные классы JAX-RPC в формате unmarshall XML. Там нет ObjectFactory и эта работа для меня ... без атрибутов. Я полагаю, что JAXB использует отражение, чтобы сделать это. Попробуйте разобраться с этим конструктором. Если это не решение, используйте аннотации (перейдите по ссылке Blaise). Подумайте, если не можете изменить класс ValueObject.

0 голосов
/ 24 декабря 2010

На мой взгляд, ваше понимание частично верно.Если вы начинаете с Java-класса ValueObject, тогда схема не нужна ... вы можете обратиться к примеру, указанному Blaise.Но иногда класс ValueObject вам не предоставляется.Вместо этого дается определение схемы XML.Таким образом, используя ANT, как вы говорите .... вы можете сгенерировать класс ValueObject из схемы xml.

Итак, для итерации, в вашем случае, поскольку у вас уже есть ValueObject, нет необходимости в схеме

...