@XmlElement(nillable = true)
@XmlElement(nillable=true)
この動作を取得するには、フィールド/プロパティで指定する必要があります。
@XmlElement(nillable=true)
private String foo;
XMLスキーマからの生成
以下に、XMLスキーマから見つめている場合にこのマッピングを生成する方法を示します。
XMLスキーマ(schema.xsd)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<xs:element name="myStringElementName" type="xs:string"
nillable="true" minOccurs="0" />
<xs:element name="myIntElementName" type="xs:int"
nillable="true" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
タイプのプロパティを取得する理由JAXBElement
JAXBElement
これはnillable要素があるため、タイプのプロパティがモデルに生成されますminOccurs="0"
。を使用するとJAXBElement
、モデルは欠落している要素(プロパティがnull)とnil="true"
(nilフラグが設定されたJAXBElement)を持つ要素の存在を区別できます。
<xs:element name="myStringElementName" type="xs:string"
nillable="true" minOccurs="0" />
外部バインディングファイル(binding.xml)
外部バインディングファイルを指定して、JAXB実装にタイプのプロパティを生成しないように指示できますJAXBElement
。これにより、JAXBがすべてのXMLドキュメントをラウンドトリップできなくなることに注意してください。
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<jaxb:bindings>
<jaxb:globalBindings generateElementProperty="false"/>
</jaxb:bindings>
</jaxb:bindings>
XJCコール
以下は、XJC呼び出しから外部バインディングファイルを活用する方法の例です。
xjc -b binding.xml schema.xsd
生成されたモデル(Foo)
生成されたモデルは次のようになります。
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"myStringElementName",
"myIntElementName"
})
@XmlRootElement(name = "foo")
public class Foo {
@XmlElement(nillable = true)
protected String myStringElementName;
@XmlElement(nillable = true)
protected Integer myIntElementName;
public String getMyStringElementName() {
return myStringElementName;
}
public void setMyStringElementName(String value) {
this.myStringElementName = value;
}
public Integer getMyIntElementName() {
return myIntElementName;
}
public void setMyIntElementName(Integer value) {
this.myIntElementName = value;
}
}
詳細については