When I marshal java object using JAXB I am getting below xml element
<error line="12" column="" message="test" />
But I want xml as below
<error line="12" message="test" />
If column value is empty then I need to get the xml as shown above otherwise I need to get the column attribute in the element.
Is there any way to get it?
An attribute will only be marshalled out with an empty String
value if the corresponding field/property contains a empty String
value. If the value is null the attribute will not be marshalled.
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=""/>