<Employee> <FirstName> Amit </ FirstName> <LastName> </ LastName> </ Employee>
因此,在上面的XML中,lastName变为空白,并且当前用XML中的Empty标记表示。但我想要以下格式的XML:
<Employee> <FirstName> Amit </ FirstName> </ Employee>
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;
<Employee> <FirstName> Amit </ FirstName> </ LastName> </ Employee>
@XmlElement(name = "LastName")
protected String lastName;
请建议,如何完全删除lastName?我需要删除很多字段,因此需要在类似的行上找到解决方案。
您可以使用LastName
设置XML的required=true
元素定义。
这将导致生成的lastName
属性使用@XmlAttribute(required=true)
进行注释。
这样,如果元素为null,则JAXB不会序列化该元素。