2011-01-19 127 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);