Xml serialization JAXB vs Jackson-dataformat-xml? Xml serialization JAXB vs Jackson-dataformat-xml? json json

Xml serialization JAXB vs Jackson-dataformat-xml?


My vote is for #2 Jackson library + Jackson-dataformat-xml.jarHave a look on the code for JSON and XML, it's just the same with bit change here and there.

 ****MainClass****  import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;  import com.fasterxml.jackson.annotation.PropertyAccessor;  import com.fasterxml.jackson.core.JsonProcessingException;  import com.fasterxml.jackson.databind.ObjectMapper;  import com.fasterxml.jackson.databind.SerializationFeature;  import com.fasterxml.jackson.dataformat.xml.XmlMapper; public class MainClass {public static void main(String[] args) throws JsonProcessingException {    // Serialization: java obj to json--> writeValueAsString    // DeSerialization: json to java obj--> ReadValue    XmlMapper mapper1 = new XmlMapper();    ObjectMapper mapper2 = new ObjectMapper();    mapper1.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);    mapper2.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);    mapper1.enable(SerializationFeature.INDENT_OUTPUT);    mapper2.enable(SerializationFeature.INDENT_OUTPUT);    MyPojo mypojo = new MyPojo();    mypojo.setName("Dhani");    mypojo.setId("18082013");    mypojo.setAge(5);    String jsonStringXML = mapper1.writeValueAsString(mypojo);    String jsonStringJSON = mapper2.writeValueAsString(mypojo);    // takes java class with def or customized constructors and creates JSON    System.out.println("XML is " + "\n" + jsonStringXML + "\n");    System.out.println("Json is " + "\n" + jsonStringJSON);}   }*****MyPojo.java*****   import com.fasterxml.jackson.annotation.JsonIgnore;   import com.fasterxml.jackson.annotation.JsonProperty;   import com.fasterxml.jackson.annotation.JsonPropertyOrder;   import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;  @JsonPropertyOrder({ "name", "age", "id", "note" })  @JacksonXmlRootElement(namespace = "urn:stackify:jacksonxml", localName = "myPOJO")   public class MyPojo {@JsonProperty("_id")private String id;private String name;private int age;@JsonIgnoreprivate String note;public String getNote() {    return note;}public void setNote(String note) {    this.note = note;}public String getId() {    return id;}public void setId(String id) {    this.id = id;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}public int getAge() {    return age;}public void setAge(int age) {    this.age = age;} } ***RESULT**** XML is         <myPOJO xmlns="urn:stackify:jacksonxml">        <name xmlns="">Dhani</name>         <age xmlns="">5</age>         <_id xmlns="">18082013</_id>         </myPOJO>   Json is      {      "name" : "Dhani",       "age" : 5,       "_id" : "18082013"         }


I vote for answer #2: using Jackson-dataformat-xml. We were in a similar situation and found that serializing to XML via Jackson was easier than expected. This is because XmlMapper extends ObjectMapper so all of our configuration changes (mix-ins, using JavaTimeModule, etc) could be directly applied to XmlMapper and they just worked.

You've already configured Jackson to output your data as you require so the hard part is done. I recommend leveraging the effort you've already invested and going with Jackson-dataformat-xml.