gpt4 book ai didi

用默认值初始化的JAXB对象

转载 作者:行者123 更新时间:2023-12-04 03:01:37 25 4
gpt4 key购买 nike

JAXB几乎没有问题。

给出:

  • Java 1.5; jaxb-来自jaxws-2_0的jars。
  • .xsd方案和生成的JAXB类。
  • .xsd中的每个简单元素都具有默认值。结果类成员具有如下注释
    @XmlElement(name =” cl_fname“,必填= true,defaultValue =” [______]“)


  • 必需的

    获取Java对象(根元素),该对象完全表示xml,并且每个成员都默认值初始化。

    当我尝试在不显式设置值的情况下编码(marshal)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;
    ...
    }

    最佳答案

    注释中的默认值仅在解码后才有效。
    解码

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

    并且您将获得具有默认值(-1,-1.0,“默认”)的对象

    如果要将默认值设置为编码,则应执行此操作
    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对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040826/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com