Какой контекст XML-схемы генерируется сигнатурой метода типа «JAXBElemet <Xyz>createXyz (Xyz xyz)» ObjectFactory с помощью xjc? - PullRequest
1 голос
/ 15 марта 2011

Я заметил, что simpleType или complexType определены, и типы используются в объявлениях нескольких элементов в файле схемы, simpleType или complexType генерируют сигнатуру метода как "JAXBElemet createXyz (Xyz xyz)". Но я не уверен, что это коренная причина.

1 Ответ

1 голос
/ 15 марта 2011

Чтобы упорядочить объект в XML, JAXB должен знать имя элемента XML, который будет использоваться. Он получает это либо из (а) аннотации @XmlRootElement в классе, либо (б) путем помещения объекта в JAXBElement, который содержит имя элемента.

Если XJC генерирует класс без @XmlRootElement, то методы фабрики для этого класса в ObjectFactory вместо этого будут использовать JAXBElement оболочки, чтобы предоставить необходимую информацию для сортировки.

Затем вы можете спросить, почему XJC решает сгенерировать @XmlRootElement для некоторых классов, но не для других, но об этом раньше спрашивали в SO, так что посмотрите и посмотрите на этот.

...