The attribute will be selected only with an empty String value, if the corresponding field / property contains an empty String value. If null, the attribute will not be sorted.
Root
package forum13218462; import javax.xml.bind.annotation.*; @XmlRootElement public class Root { @XmlAttribute String attributeNull; @XmlAttribute String attributeEmpty; @XmlAttribute(required=true) String attributeNullRequired; }
Demo
package forum13218462; import javax.xml.bind.*; public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Root.class); Root root = new Root(); root.attributeNull = null; root.attributeEmpty = ""; root.attributeNullRequired = null; Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(root, System.out); } }
Output
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <root attributeEmpty=""/>
source share