我正在创建一个 JAXBElement<BigInteger>
具有 ObjectFactory
的元素.
该对象是使用 null
创建的值,因为该字段的架构表明它有一个 nillable
属性。
在编码到 xml 期间,输出文件显示:
<TaxCode xsi:nil="true"/>
我怎样才能让它写<taxCode/>
仅?
最佳答案
你不能,因为那是错误的。 <taxCode/>
和<TaxCode xsi:nil="true"/>
不是同一件事。
<taxCode/>
表示<taxcode>
具有空白但非空内容(即空字符串)的元素,而 <TaxCode xsi:nil="true"/>
明确表示 <taxCode>
为空。
假设您的 ObjectFactory
由 XJC 从 XML 模式生成,那么如果 JAXB 生成 <taxCode/>
那么它就会违反架构。
如果可以选择更改架构,则删除 nillable
从元素声明中,并重新生成代码。然后,JAXB 应省略 <taxCode/>
全部元素。
关于java - 使用 ObjectFactory 时可空元素在输出文件中获取冗余数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016403/