告诉jaxb不要删除下划线
有没有办法告诉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