Serialize Java List to XML using Jackson XML mapper
jackson, java, pojo, xml, xmlmapper
Solution
Try the below code
@JacksonXmlRootElement(localName = "customer")
class Customer {
@JacksonXmlProperty(localName = "id")
private int id;
@JacksonXmlProperty(localName = "name")
private String name;
@JacksonXmlProperty(localName = "addresses")
@JacksonXmlElementWrapper(useWrapping = false)
private Address[] address;
// you can add it on getter method instead of declaration.
@JacksonXmlElementWrapper(useWrapping = false)
public Address[] getAddress(){
return address;
}
//getters, setters, toString
}
class Address {
@JacksonXmlProperty(localName = "city")
private String city;
@JacksonXmlProperty(localName = "state")
private String state;
// getter/setter
}
Problem
Hi I need to create an XML from JAVA using Jackson-dataformat XMLMapper. The XML should be like ``` <Customer> <id>1</id> <name>Mighty Pulpo</name> <addresses> <city>austin</city> <state>TX</state> </addresses> <addresses> <city>Hong Kong</city> <state>Hong Kong</state> </addresses> </Customer> ``` But I get it always like with an extra "< addresses> < /addresses>" tag. ``` <Customer> <id>1</id> <name>Mighty Pulpo</name> <addresses> <addresses> <city>austin</city> <state>TX</state> </addresses> <addresses> <city>Hong Kong</city> <state>Hong Kong</state> </addresses> <addresses> </Customer> ``` I am using below code to create XML ``` JaxbAnnotationModule jaxbAnnotationModule = new JaxbAnnotationModule(); XmlMapper mapper = new XmlMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); mapper.registerModule(jaxbAnnotationModule); mapper.registerModule(new GuavaModule()); String xml = mapper.writeValueAsString(customer); System.out.println(xml); ``` Please can some one help me? How can I remove the extra tag please. I have tried to use @XmlElement but it does not help help. TIA!!