Java 即使从JAXB中的XmlAdapter返回null,标记也不会从XML中删除 我想从XML中删除空标记
阿米特 因此,在上面的XML中,lastName是空的,并且当前用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
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;
}
}
@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;
阿米特
@XmlElement(name = "LastName")
protected String lastName;
请建议,如何完全删除姓氏?我需要删除很多字段,因此需要类似行的解决方案。您可以将XML的
LastName
元素定义设置为required=true
这将导致生成的
lastName
属性用@xmltattribute(required=true)
这样,如果元素为null,JAXB就不会序列化该元素