Salut, je dois créer un XML à partir de Java en utilisant Jackson-dataformat XMLMapper. Le XML devrait être comme
<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>
Mais je l'obtiens toujours comme avec une balise supplémentaire "<adresses> </ adresses>".
<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>
J'utilise le code ci-dessous pour créer du 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);
Est-ce que quelqu'un peut m'aider, s'il vous plaît? Comment puis-je retirer la balise supplémentaire s'il vous plaît. J'ai essayé d'utiliser @XmlElement mais cela n'aide pas. TIA !!
Essayez le code ci-dessous
@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;
//getters, setters, toString
}
class Address {
@JacksonXmlProperty(localName = "city")
private String city;
@JacksonXmlProperty(localName = "state")
private String state;
// getter/setter
}
Ce paramètre modifie le comportement d'habillage par défaut, si vous ne souhaitez pas traiter l'annotation partout dans votre code.
XmlMapper mapper = new XmlMapper();
mapper.setDefaultUseWrapper(false);
Juste pour ajouter à la réponse de ManojP, si l'ajout de la fonction @JacksonXmlElementWrapper(useWrapping = false)
sur la déclaration de votre variable ne fonctionne pas (ce qui était le cas pour moi), l'ajouter à la méthode getter fera l'affaire.