【问题标题】:JAXB returns "null" string instead of nullJAXB 返回“null”字符串而不是 null
【发布时间】:2014-04-29 21:07:41
【问题描述】:

关于设置元素:

element.setValue(null)

它将 XML 编组到

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

我希望它是:

<element>
  <value/>
</element>

 <element />

【问题讨论】:

  • 你能显示element的类吗?特别是如何注释 value 属性(如果有的话)。
  • 值的类型是 xsd:String。

标签: java xml jaxb marshalling


【解决方案1】:

JAXB 不会将空值编组为:

<foo>null</foo>

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

更多信息

【讨论】:

  • 这是正确的。我的逻辑一定有问题。 JAXB 不会创建字符串“null”。
【解决方案2】:

你需要在getter方法值上加上@XmlValue注解

@XmlValue
public String getValue(){
}

另见How to represent null value as empty element with JAXB?

【讨论】:

    【解决方案3】:

    尝试设置为 element.setValue("") ,而不是直接设置为 null 以获得所需的输出。

    【讨论】:

      【解决方案4】:

      你有两个选择:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-07-28
        • 1970-01-01
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多