Чтобы упорядочить объект в XML, JAXB должен знать имя элемента XML, который будет использоваться. Он получает это либо из (а) аннотации @XmlRootElement
в классе, либо (б) путем помещения объекта в JAXBElement
, который содержит имя элемента.
Если XJC генерирует класс без @XmlRootElement
, то методы фабрики для этого класса в ObjectFactory
вместо этого будут использовать JAXBElement
оболочки, чтобы предоставить необходимую информацию для сортировки.
Затем вы можете спросить, почему XJC решает сгенерировать @XmlRootElement
для некоторых классов, но не для других, но об этом раньше спрашивали в SO, так что посмотрите и посмотрите на этот.