问题描述
JAXB几乎没有问题。
鉴于:
- Java 1.5;来自jaxws-2_0的jaxb -jars。
- .xsd方案和生成的JAXB类。
- .xsd中的每个简单元素都有默认值。结果类成员的注释类似于
@XmlElement(name =cl_fname,required = true,defaultValue =[ _ __ _ __])
- Java 1.5; jaxb -jars from jaxws-2_0.
- .xsd scheme and generated JAXB classes.
- Every simple element in .xsd has default value. And as result class members has annotations like"@XmlElement(name = "cl_fname", required = true, defaultValue = "[______]")"
必需
获取完全代表xml的java对象(根元素)以及默认值初始化的每个成员。
Get java object (root element) which fully represent xml and every member initialized by default values.
当我尝试在没有明确设置值的情况下编组xml时,默认值不会显示...是否有任何使用默认值填充的marshall xml的方法,而无需自定义生成的类?
when I try to marshall xml without explicitly setting values, default values doesn't make sence... is there any way to marshall xml populated with default values without customization of generated classes?
.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 class:
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;
...
}
推荐答案
注释中的默认值仅在解组之后才有效。
解组此
default value that is in annotations works only after unmarshalling.
unmarshal this
<document>
<d_int/>
<d_double/>
<d_string/>
</document>
您将获得具有默认值的对象(-1,-1.0,默认)
and you will get object with default values (-1, -1.0, "Default")
如果你想将默认值设置为编组,你应该这样做
If you want set default values to marshalling, you should do this
public class Document {
@XmlElement(name = "d_int", defaultValue = "-1")
protected int dInt = 100;
@XmlElement(name = "d_double", defaultValue = "-1.0")
protected double dDouble = -100;
@XmlElement(name = "d_string", required = true, defaultValue = "Default")
protected String dString = "def";
...
}
jaxb仅为解组生成默认值
jaxb generate default values only for unmarshalling
这篇关于使用默认值初始化JAXB对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!