2011-01-19 126 views
1

我有兩個通過JAXB的xjc命令生成的XSD。JAXB multiple xsd

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

我試圖使用從第一XSD像
ItemType item = factory.createItemType();
DataType dataType = factory.createDataType();
MapType mapType = factory.createMapType();
dataType.getMap().add(mapType);
item.getAny().add(dataType);

注意選擇對象數據類型和地圖類型都來自這兩個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 2011-01-20 10:16:14

回答

1

回答我自己的問題。

我們應該將DataType類轉換爲JAXBElement。

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