Ciao,
è stato un po' rognoso ci ho messo 10 minuti a trovare la soluzione!
Tutta colpa degli import..
Questa è la mia main:
codice:
import java.io.IOException;import java.util.ArrayList;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class PatientMain {
public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
Patient mapp = new Patient();
mapp.setPatientId("0");
mapp.setPatientName("Francesco Muià");
if(mapp.getListSerie() == null){
mapp.setListSerie(new ArrayList<Serie>());
}
for(int a = 0; a<3; a++){
Serie s = new Serie();
s.setNoSerie("A" + a);
mapp.getListSerie().add(s);
}
String xmlWado = new XmlMapper().writeValueAsString(mapp);
System.out.println(xmlWado.replace("><",">\r\n<"));
}
}
Questa è la Patient:
codice:
import java.io.Serializable;
import java.util.ArrayList;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.xml.annotate.JacksonXmlRootElement;
@JsonAutoDetect
@JacksonXmlRootElement(localName ="Patient")
public class Patient implements Serializable {
private static final long serialVersionUID = -2981849269841429849L;
@JsonProperty("patientId")
@JacksonXmlProperty(isAttribute = true)
private String patientId;
@JsonProperty("patientName")
@JacksonXmlProperty(isAttribute = true)
private String patientName;
@JacksonXmlProperty(localName="Series",isAttribute = true)
@JacksonXmlElementWrapper(useWrapping = false )
private ArrayList<Serie> listSerie;
public String getPatientId() {
return patientId;
}
public void setPatientId(String patientId) {
this.patientId = patientId;
}
public String getPatientName() {
return patientName;
}
public void setPatientName(String patientName) {
this.patientName = patientName;
}
public ArrayList<Serie> getListSerie() {
return listSerie;
}
public void setListSerie(ArrayList<Serie> listSerie) {
this.listSerie = listSerie;
}
}
Questa è Serie, tanto per...:
codice:
public class Serie {
private String noSerie=null;
public String getNoSerie() {
return noSerie;
}
public void setNoSerie(String noSerie) {
this.noSerie = noSerie;
}
}
Last but not least gli imports di maven:
codice:
<dependency>
<groupId>com.fasterxml</groupId>
<artifactId>jackson-xml-databind</artifactId>
<version>0.6.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.1.4</version>
</dependency>
....e questo è l'output:
codice:
<Patient patientId="0" patientName="Francesco Muià">
<Series><noSerie>A0</noSerie></Series>
<Series><noSerie>A1</noSerie></Series>
<Series><noSerie>A2</noSerie></Series>
</Patient>