Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使从JAXB中的XmlAdapter返回null,标记也不会从XML中删除 我想从XML中删除空标记_Java_Jaxb_Jaxb2 - Fatal编程技术网

Java 即使从JAXB中的XmlAdapter返回null,标记也不会从XML中删除 我想从XML中删除空标记

Java 即使从JAXB中的XmlAdapter返回null,标记也不会从XML中删除 我想从XML中删除空标记,java,jaxb,jaxb2,Java,Jaxb,Jaxb2,阿米特 因此,在上面的XML中,lastName是空的,并且当前用XML中的空标记表示。 但我希望XML的格式如下: 阿米特 因此,对XmlAdapter进行如下扩展: package com.jaxb.domain; import javax.xml.bind.annotation.adapters.XmlAdapter; import org.springframework.util.StringUtils; public class NullifyAdapter extends

阿米特

因此,在上面的XML中,lastName是空的,并且当前用XML中的空标记表示。 但我希望XML的格式如下:

阿米特

  • 因此,对XmlAdapter进行如下扩展:

    package com.jaxb.domain;
    import javax.xml.bind.annotation.adapters.XmlAdapter;
    
    import org.springframework.util.StringUtils;
    
    public class NullifyAdapter extends XmlAdapter<String, String> {
    
      @Override
      public String unmarshal(String strValue) throws Exception {
        // TODO Auto-generated method stub
        return strValue;
      }
    
      @Override
      public String marshal(String strValue) throws Exception {
        if (StringUtils.isEmpty(strValue)) {
          return null;
        }
        return strValue;
      }
    
    }
    
  • 在进行上述更改后,生成的XML如下所示:

  • @XmlJavaTypeAdapters({
    @XmlJavaTypeAdapter(value=NullifyAdapter.class, type=String.class)
    })
    package com.jaxb.domain;
    
    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;
    
    阿米特

  • 在我的jaxb绑定类中,该字段定义为:

    @XmlElement(name = "LastName")
    protected String lastName;
    

  • 请建议,如何完全删除姓氏?我需要删除很多字段,因此需要类似行的解决方案。

    您可以将XML的
    LastName
    元素定义设置为
    required=true

    这将导致生成的
    lastName
    属性用
    @xmltattribute(required=true)

    这样,如果元素为null,JAXB就不会序列化该元素