JAXBにはほとんど問題はありません。
与えられた:
- Java 1.5; jaxb -jarsfromjaxws-2_0。
- .xsdスキームと生成されたJAXBクラス。
- .xsdのすべての単純な要素にはデフォルト値があります。結果として、クラスメンバーには " @XmlElement(name =" cl_fname "、required = true、defaultValue =" [ _ __ _ __] ") "のようなアノテーションがあります。
必須
xmlとデフォルト値で初期化されたすべてのメンバーを完全に表すJavaオブジェクト(ルート要素)を取得します。
値を明示的に設定せずにxmlをマーシャルしようとすると、デフォルト値が意味をなさない...生成されたクラスをカスタマイズせずにデフォルト値が入力されたxmlをマーシャルする方法はありますか?
.xsdの例:
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element ref="d_int"/>
<xs:element ref="d_double"/>
<xs:element ref="d_string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="d_int" type="xs:int" default="-1"/>
<xs:element name="d_double" type="xs:double" default="-1.0"/>
<xs:element name="d_string" type="xs:string" default="false"/>
およびJavaクラス:
public class Document {
@XmlElement(name = "d_int", defaultValue = "-1")
protected int dInt;
@XmlElement(name = "d_double", defaultValue = "-1.0")
protected double dDouble;
@XmlElement(name = "d_string", required = true, defaultValue = "Default")
protected String dString;
...
}