使用默认值初始化JAXB对象

使用默认值初始化JAXB对象,jaxb,xsd,default-value,Jaxb,Xsd,Default Value,JAXB没有什么问题。 给定: Java1.5;jaxb-jars来自jaxws-2_0 .xsd方案和生成的JAXB类 .xsd中的每个简单元素都有默认值。因此类成员具有如下注释 “@XmlElement(name=“cl\u fname”,required=true,defaultValue=“[\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu]”” 必需的 获取java对象(根元素),该对象完全表示xml和由默认值初始化的每个成员 当我尝试在不显式

JAXB没有什么问题。


给定:

  • Java1.5;jaxb-jars来自jaxws-2_0
  • .xsd方案和生成的JAXB类
  • .xsd中的每个简单元素都有默认值。因此类成员具有如下注释 “@XmlElement(name=“cl\u fname”,required=true,defaultValue=“[\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu]”

必需的


获取java对象(根元素),该对象完全表示xml和由默认值初始化的每个成员


当我尝试在不显式设置值的情况下处理xml时,默认值没有意义。。。是否有任何方法可以在不自定义生成的类的情况下,对使用默认值填充的xml进行整理

.xsd的示例:


和java类:

公共类文档{
@XmlElement(name=“d_int”,defaultValue=“-1”)
保护内力;
@XmlElement(name=“d_double”,defaultValue=“-1.0”)
双保护双工;
@xmlement(name=“d_string”,required=true,defaultValue=“Default”)
受保护字符串;
...
}

注释中的默认值仅在解组后有效。
解开这个

<document>
   <d_int/>
   <d_double/>
   <d_string/>
</document>  

jaxb仅为解组生成默认值

要从XSD提供的默认值初始化类成员,可以使用XJC的默认值插件

请注意,该文档中解释的ant任务定义不适用于我,XJC和插件的类路径必须分开。调用插件时指定插件路径对我有效:

<xjc schema="some.xsd" >
    <arg value="-Xdefault-value"/>
    <classpath>
        <pathelement location="lib/xjc-plugins/jaxb2-default-value-1.1.jar"/>
    </classpath>
</xjc>


我一直在想,如果您还指定了一个
defaultValue
,那么将字段标记为
required
有什么意义呢。这似乎有点矛盾,不是吗?如果您不使用
默认值
,那么分配给字段的值是用于解组和编组的默认值,还是没有用于解组的默认值?(例如,如果为
取下
defaultValue=“-1”
,则
100
是否也是解组的默认值?)
<xjc schema="some.xsd" >
    <arg value="-Xdefault-value"/>
    <classpath>
        <pathelement location="lib/xjc-plugins/jaxb2-default-value-1.1.jar"/>
    </classpath>
</xjc>