特定字段的可空属性值的 Jaxb 自定义
Jaxb customization of nillable attribute value for a specific field
我正在使用 XSD 架构文件(我无法更改),该文件定义元素 XXX 如下:
<xsd:element name="XXX" type="Date" minOccurs="0"/>
这会在生成的 class.
中产生一个 java.util.Date
我需要将字段编组方式更改为 XML:如果属性为 null,我想生成一个空标记,例如 xsd 是:
<xsd:element name="XXX" type="Date" minOccurs="0" nillable=true/>
这会在生成的 class.
中生成一个 JaxbElement
是否可以通过 Jaxb 绑定做这样的事情?
此致
朱利奥
是的,你可以..但这不是一个好的做法。
<bindings node="//xs:element[@name='XXX']">
<property name="xxx">
<baseType>
<javaType name= "javax.xml.bind.JAXBElement<java.util.Date>"/>
</baseType>
</property>
</bindings>
您还应该在 <javaType>
See here Documentation
中添加以下属性
- parseMethod 是要调用的解析方法的名称
解组。
- printMethod 是要打印的打印方法的名称
在编组期间调用。
建议:
- 使用 XSLT 预处理您的模式以在需要的地方添加
nillable
。
- 使用
jaxb2-simplify-plugin
并使用 simplify:as-reference-property
自定义您的元素。我实际上从未尝试过,但也许它会起作用。
- 写一个 XJC 插件。
ps。我是上述 jaxb2-simplify-plugin.
的作者
我正在使用 XSD 架构文件(我无法更改),该文件定义元素 XXX 如下:
<xsd:element name="XXX" type="Date" minOccurs="0"/>
这会在生成的 class.
我需要将字段编组方式更改为 XML:如果属性为 null,我想生成一个空标记,例如 xsd 是:
<xsd:element name="XXX" type="Date" minOccurs="0" nillable=true/>
这会在生成的 class.
是否可以通过 Jaxb 绑定做这样的事情?
此致
朱利奥
是的,你可以..但这不是一个好的做法。
<bindings node="//xs:element[@name='XXX']">
<property name="xxx">
<baseType>
<javaType name= "javax.xml.bind.JAXBElement<java.util.Date>"/>
</baseType>
</property>
</bindings>
您还应该在 <javaType>
See here Documentation
- parseMethod 是要调用的解析方法的名称 解组。
- printMethod 是要打印的打印方法的名称 在编组期间调用。
建议:
- 使用 XSLT 预处理您的模式以在需要的地方添加
nillable
。 - 使用
jaxb2-simplify-plugin
并使用simplify:as-reference-property
自定义您的元素。我实际上从未尝试过,但也许它会起作用。 - 写一个 XJC 插件。
ps。我是上述 jaxb2-simplify-plugin.
的作者