有沒有辦法告訴JAXB在從XML Schema創建getter/setter名稱時不刪除下劃線?
原因:這會導致信息丟失,並且在XML和Java之間切換更加困難;例如在書面通信中,一個參與者可能會對「不同的名字」感到困惑。
告訴jaxb不要刪除下劃線
例如:NR_ROR不應該變爲getNRROR而是getNR_ROR。
注意:我認爲這些不那麼重要的名稱是值得「違反」Java命名約定的。
TIA
karolrvn
有沒有辦法告訴JAXB在從XML Schema創建getter/setter名稱時不刪除下劃線?
原因:這會導致信息丟失,並且在XML和Java之間切換更加困難;例如在書面通信中,一個參與者可能會對「不同的名字」感到困惑。
告訴jaxb不要刪除下劃線
例如:NR_ROR不應該變爲getNRROR而是getNR_ROR。
注意:我認爲這些不那麼重要的名稱是值得「違反」Java命名約定的。
TIA
karolrvn
創建自定義綁定並將「underscoreBinding」設置爲「asCharInWord」。一種方法是創建一個名爲binding.xjb的文件,並使用-b標誌告訴xjc它在哪裏。下面是你放什麼binding.xml一個例子:
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<jaxb:bindings schemaLocation="foobar.xsd">
<jaxb:globalBindings underscoreBinding="asCharInWord"/>
</jaxb:bindings>
</jaxb:bindings>
看看jaxb提供的underscoreBinding。例如,請參閱此處的文檔 - >http://java.sun.com/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html
我從來沒有使用它,因爲我喜歡camelCaseWords,但它聽起來像它在做你正在尋找的東西。
感謝您的回答。
也許enableJavaNamingConventions = false?
但是我沒有找到任何描述 –
KarolDepka
2010-01-31 14:12:03
我來到這裏尋找如何做同樣的事情,與該模式被嵌入在WSDL裏面的額外資格。要做到這一點,上面lreeder的回答結合https://stackoverflow.com/a/6545815/4512591,改變:
schemaLocation="foobar.xsd"
到
wsdlLocation="foobar.wsdl"
淨結果:
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0">
<jaxb:bindings wsdlLocation="foobar.wsdl">
<jaxb:globalBindings underscoreBinding="asCharInWord"/>
</jaxb:bindings>
</jaxb:bindings>
這與JAXWS參考實現,至少。
只是好奇,nrRor和getNrRor有什麼錯? – Yoni 2010-01-29 20:11:22
首先,對於知道XML中名稱的人來說,這不是「同樣的事情」。 – KarolDepka 2010-01-31 14:11:20
如果名稱要象徵相同的東西。他們應該是一樣的。否則就會出現往返命名(例如,爲了在模式/ XML中搜索相應的元素,您將不得不重新調整名稱)並且可能會造成混淆。 NrRor很短,所以它可以用手寫,但有更長和更棘手的名字。 – KarolDepka 2010-01-31 14:29:54