JAXB несколько XSD - PullRequest
       3

JAXB несколько XSD

1 голос
/ 19 января 2011

У меня есть два XSD, которые я сгенерировал с помощью команды JAXB xjc.

http://www.imsglobal.org/xsd/imscp_v1p1.xsd и http://www.mmtech.ru/adlcp_v1p3.xsd

Я пытаюсь использовать объект Item из первого xsd, например ItemType item = factory.createItemType();<br/> DataType dataType = factory.createDataType();<br/> MapType mapType = factory.createMapType();<br/> dataType.getMap().add(mapType);<br/> item.getAny().add(dataType);<br/>

Обратите внимание, что оба типа DataType и MapType относятся к двум XSD.

Я могу сгенерировать xml-файл, ожидаемый для одной проблемы, он выдает ошибку

Вызвано: com.sun.istack.SAXException2: невозможно маршалировать тип «packagename.DataType» в качестве элемента, поскольку отсутствует аннотация @XmlRootElement

Поэтому я попытался добавить элемент @XmlRootElement вкласс DataType и вместо него создающий ns2: dataType, он создает XML ниже.

        <item>
            <dataType>
                <ns2:map targetID="targetid" writeSharedData="false"/>
            </dataType>
        </item>

Пожалуйста, помогите.Спасибо

1 Ответ

1 голос
/ 20 января 2011

, чтобы ответить на мой собственный вопрос.

Мы должны преобразовать класс DataType в JAXBElement.

JAXBElement dataTypeElement = factory.createData(dataType);
item.getAny().add(dataTypeElement);
...