2014-10-07 66 views
0

是否有可能在生成JavaClass和XJC2Task時,爲每個complexType生成額外的子包?XJC:爲complexTypes生成子包

我有一個從xsd生成的問題,其中我有一個名爲Traveler的complexType,它有一個名爲「ElementNumber」的元素。

但也有一個名爲TravellerElementNumber的complexType。

當生成我收到錯誤「兩個聲明引起ObjectFactory類的碰撞。

有沒有什麼辦法來解決這個問題,在不改變XSD?

最好的問候,

性病

回答

0

不,你不能生成複雜類型的開箱即用的子包。

是的,你可以解決它,而不改變模式。使用jaxb:factoryMethod綁定元素。

Example

<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <jaxb:bindings 
     schemaLocation="ogc/gml/3.1.1/base/feature.xsd" 
     node="/xs:schema"> 
     <jaxb:bindings node="xs:element[@name='_FeatureCollection']"> 
      <jaxb:factoryMethod name="AFeatureCollectionElement"/> 
     </jaxb:bindings> 
    </jaxb:bindings> 
</jaxb:bindings> 

你得點的結合,你有衝突的元素之一。不要忘記包含綁定文件(請參閱this example)。

+0

感謝您的回答!但現在我得到[錯誤]編譯器無法兌現此factoryMethod定製。它附屬於錯誤的地方,或與其他綁定不一致。 任何想法? – sti 2014-10-08 07:54:32

+0

那麼,將它附加到* right *的地方。我只是覺得我沒有足夠的心靈感應來猜測你的錯誤在哪裏,而沒有看到你的任何代碼。我只知道'jaxb:factoryMethod'的作品,這是你的問題的答案。 – lexicore 2014-10-08 08:43:17

+0

感謝您的幫助!在包含最新的jaxb庫後,它就像一個魅力一樣工作! – sti 2014-10-08 11:10:26