2010-02-26 48 views
1

我上生成Java對象的工作。 XSD文件中有幾個元素代表的商業模式的實體,與像帳戶通用名等,其使用生成的文件解組XML的系統在其域模型的幾個相互衝突的類名。儘管我們可以使用不同的包名來解決類名衝突,但我認爲具有不同名稱的對象會更易讀/可維護。選項JAXB 2.1綁定定製

正因爲如此,我想改變XJC彙編,以便爲生產對象,如:DataTransferAccount.java等代替Account.java。超級,我將使用的兩個選項JAXB結合的模式(http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html)時提供一個:

  1. 內嵌自定義 - 使用JAXB命名空間中指定的類名
  2. 外部綁定文件批註的XSD本身 - 提供一個額外的文件到XJC,它具有關於如何將模式元素映射到java類的規則

除了易用性之外,是否有使用選項1的良好參數?天真,我想使用它,因爲它是容易的,但下山的路,我可以看到維護問題,如果我們決定擺脫JAXB XML數據編程。

回答

0

你的直覺是不錯的 - 在我會考慮增加內嵌批註架構的唯一情況是,如果您或您的開發者負責維護模式本身的人。

如果模式是別人的,並有在未來改變它的任何危險,那麼抗拒的誘惑 - 使用外部綁定定製。是的,使用起來有些尷尬,但是值得付出努力。

至於您最初的名稱衝突問題,XML架構不允許重複使用相同的名稱。在生成的Java中發生名稱衝突的唯一方法是如果您要將來自多個名稱空間的模式編譯到相同的Java包中。如果您有多個名稱空間,我強烈建議您將每個名稱空間放入其自己的包中,但它確實會使事情更清晰。它也避免了這些名稱衝突。

+0

感謝您的回答。我應該更具體地說明名稱衝突問題 - 它是與應用程序中的XML模式對象和現有模型對象的名稱衝突。但是,包裝的命名會解決這個問題。 – 2010-03-01 00:14:16