JAXB返回" null"字符串而不是null

时间:2014-04-29 21:07:42

标签: java xml jaxb marshalling

设置元素:

element.setValue(null)

它将XML编组为

<element>
 <value>null<value>
</element>

我期待它:

<element>
  <value/>
</element>

 <element />

4 个答案:

答案 0 :(得分:1)

JAXB不会将空值编组为:

<foo>null</foo>

默认情况下,它不会封送元素。如果您使用@XmlElement(nillable=true)对其进行注释,则会使用xsi:nil属性。

了解更多信息

答案 1 :(得分:0)

您需要在getter方法值

上放置@XmlValue注释
@XmlValue
public String getValue(){
}

进一步了解How to represent null value as empty element with JAXB?

答案 2 :(得分:0)

尝试设置为 element.setValue(&#34;&#34;),而不是直接为所需输出设置null。

答案 3 :(得分:0)

您有两种选择:

  1. 使用空字符串设置值,并在每次需要文件
  2. 中的空字段时执行此操作
  3. 在getter方法中,您可以这样做:

    public String getValue(){
     if(value == null)
           return null;
     return value;
    }
    

    在这种情况下,如果您没有为此字段赋值,那么您将拥有一个空元素。 个人而言,我更喜欢第一个解决方案