Какой контекст XML-схемы генерируется сигнатурой метода, например "JAXBElemet<Xyz> createXyz (Xyz xyz)" ObjectFactory, с помощью xjc?
Я заметил, что simpleType или complexType определены, и типы используются в объявлениях нескольких элементов в файле схемы, simpleType или complexType генерируют сигнатуру метода как "JAXBElemet createXyz(Xyz xyz)". Но я не уверен, что это коренная причина.
1 ответ
Чтобы упорядочить объект в XML, JAXB необходимо знать имя используемого элемента XML. Он получает это либо из (а) @XmlRootElement
аннотации к классу, или (б), оборачивая объект в JAXBElement
, который содержит имя элемента.
Если XJC генерирует класс без @XmlRootElement
то фабричные методы для этого класса в ObjectFactory
вместо этого будет использовать JAXBElement
упаковщики, чтобы предоставить необходимую информацию для сортировки.
Затем вы можете спросить, почему XJC решает генерировать @XmlRootElement
для некоторых классов, но не для других, но об этом уже спрашивали на SO, так что иди и посмотри вокруг.