2011-01-19 3 views
1

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

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

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

Заметим, что 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> 

Просьба помочь. Спасибо

+0

Вы запускали xjc один раз с обеих схем или один раз для каждого файла схемы? – Robert

+0

Я запустил его один раз для обоих. – mezzie

ответ

1

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

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

Смежные вопросы