自定義xjb適用於根據需要覆蓋名稱,但我們會丟失名稱中的下劃線。使用保留下劃線的xjb覆蓋JAXB屬性名稱
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<jxb:globalBindings underscoreBinding="asCharInWord"/>
<jxb:bindings schemaLocation="foo.xsd">
<jxb:bindings node="//xs:complexType[@name='fooType']">
<jxb:property name="value" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
正如你可以看到上面的XJB生成的Java代碼是
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"value"
})
public class FooType {
@XmlMixed
@XmlAnyElement(lax = true)
protected List<Object> value;
......
public List<Object> getValue() {
if (value == null) {
value = new ArrayList<Object>();
}
return this.value;
}
現在,一旦我改變一行在XJB上面:
<jxb:property name="_value" />
所有改變在java代碼中是:
public List<Object> get_Value() {
if (value == null) {
value = new ArrayList<Object>();
}
return this.value;
}
觀察:「值」
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"value"
})
期望:「_value」
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "textType", propOrder = {
"_value"
})
我做了一些挖掘,我有一個原理性的解決方法。 目標是讓「值」在我的** json **中顯示爲「_value」,並且我使用Gson從java對象(來自jaxb的類)執行此操作。 顯然,有一個 '@SerializedName(「_值」)' 允許GSON採取與所需的名稱生成的響應的照顧,如果我手動添加此行,我得到了我想要的東西。現在,這可以使用xjb完成,這樣我不需要在每次構建時手動添加此行?我試着玩annox插件,但似乎並不是解決方案。 – icedek