JAXB xjc:如果值为null,如何为返回空的字符串生成代码?
给出以下示例xsd代码段:JAXB xjc:如果值为null,如何为返回空的字符串生成代码?,jaxb,Jaxb,给出以下示例xsd代码段: < xs:attribute name="SEGMENT" default="" use="optional" type="xs:string"/ > < xs:element name="NAME" default="" type="xs:string"/ > 我的问题是如何让它对xs:element对象执行相同的操作?换句话说,给定以下xsd代码段: < xs:attribute name="SEGMENT" default=
< xs:attribute name="SEGMENT" default="" use="optional" type="xs:string"/ >
< xs:element name="NAME" default="" type="xs:string"/ >
我的问题是如何让它对xs:element
对象执行相同的操作?换句话说,给定以下xsd代码段:
< xs:attribute name="SEGMENT" default="" use="optional" type="xs:string"/ >
< xs:element name="NAME" default="" type="xs:string"/ >
如何做到这一点?JAXB为具有默认值的元素生成的代码与为具有默认值的属性生成的代码不同,因为: 属性和元素的默认值都是使用Default属性声明的,尽管此属性在每种情况下的结果略有不同。当使用默认值声明属性时,该属性的值是实例文档中作为属性值出现的任何值;如果该属性未出现在实例文档中,则架构处理器将为该属性提供与默认属性相同的值。请注意,只有当属性本身是可选的时,属性的默认值才有意义,因此指定默认值和可选值以外的任何值以供使用是错误的 模式处理器对默认元素的处理略有不同。当使用默认值声明元素时,元素的值是实例文档中作为元素内容出现的任何值;如果元素显示时没有任何内容,架构处理器将为元素提供一个与默认属性相同的值。但是,如果该元素没有出现在实例文档中,则模式处理器根本不提供该元素。总之,元素和属性默认值之间的差异可以表述为:当属性缺失时应用默认属性值,当元素为空时应用默认元素值 对于缺少的属性(这里是特殊的getter),您可以始终使用默认值,但是有一个catch缺少元素值 尽管如此,当您解组实例时,解组器知道如何处理默认值。详情请参见此处:
c:\temp
中,请尝试以下操作:java-jar c:\temp\jaxb-xjc.jar-classpath c:\temp\jaxb-api.jar;c:\temp\jaxb-impl.jar;c:\temp\jaxb2-default-value-1.1.jar-d c:\temp-extension-Xdefault-value-verbose c:\temp\YourSchema.xsd
我感谢您的反馈,但您最后的建议不起作用。如果在java中使用“-jar”选项,则会忽略类路径。我可以单独使用-classpath属性,但是您必须将所需的每个jar添加到该路径中(对于ant也是如此),当我尝试在没有-jar选项的情况下运行时,仍然会得到“Error:Main method not found in class com.sun.tools.xjc.XJCTask”