2010-05-27 72 views
2

我有3个XSD文件:是否有可能使用JAXB生成共享对象?

  • a.xsd
  • b.xsd
  • shared.xsd

shared.xsd被导入到两个a.xsd和使用b.xsd

<xs:import schemaLocation="shared.xsd"/> 

shared.xsd限定

<xs:element name="item"> 
<xs:complexType> .... 

如果我使用xjc生成java代码a.xsd并将b.xsd生成到不同的包中,并且在每个包中为item生成单独的java类。怎样才能有一个单一的共享类的项目,并让A和B使用它?

回答

0

您可以覆盖生成文件放入的包。这应该允许两个共享对象进入相同的地方。

xjc -p com.test a.xsd b.xsd shared.xsd 

我想这就是你要找的。

+0

哇谢谢它的作品。我总是执行 xjc a.xsd xjc b.xsd xjc shared.xsd 并且这样它没有工作。这个解决方案只有一个问题:a.xsd和b.xsd的顶层元素都被称为相同(在我的情况下为“请求”),不幸的是我无法改变它。使用我的解决方案,这不是问题,因为每个xsd都被编译到不同的包中,但现在在同一个包中具有相同名称的两个元素发生冲突。有没有解决方案? – 2010-05-27 19:12:03

+0

@Peter Szanto,您应该能够使用绑定配置文件(.xjb文件)来解决该冲突。 – 2010-05-27 22:52:58

+0

再次感谢,它的作品!这是惊人的总是有一些新的学习。只是为了公众的利益,我添加下面的在线XJB申报到我的xsd \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t 并且生成在xml中绑定请求的EmailauthenticationRequest.java – 2010-05-28 16:01:38

0

要么做@Chris Dail说的话,要么在一个模式文件中合并a.xsdb.xsd,因为JAXB看起来是一个创建包的命名空间。

相关问题