2010-05-27 55 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看起來是一個創建包的命名空間。

相關問題