使用ObjectFactory时,Nillable元素在输出文件中获取冗余数据

时间:2012-01-26 09:59:54

标签: java xml jaxb marshalling

我正在使用JAXBElement<BigInteger>创建ObjectFactory元素。

使用null值创建对象,因为此字段的架构表明它具有nillable属性。

在编组到xml期间,输出文件显示:

<TaxCode xsi:nil="true"/>

我怎样才能让它只写<taxCode/>

1 个答案:

答案 0 :(得分:2)

你不能,因为那是错误的。 <taxCode/><TaxCode xsi:nil="true"/>不是一回事。

<taxCode/>表示具有空白但非空内容的<taxcode>元素(即空字符串),而<TaxCode xsi:nil="true"/>明确表示<taxCode>为空。

假设您的ObjectFactory是由XJC从XML Schema生成的,那么如果JAXB生成<taxCode/>那么它将违反模式。

如果更改架构是一个选项,则从元素声明中删除nillable,然后重新生成代码。然后,JAXB应该完全省略<taxCode/>元素。