xmlmapper usewrapping new jacksonxmlelementwrapper false deserializar java xml jackson

java - usewrapping - xml to json jackson



Anotaciones de Jackson XML: elemento de cadena con atributo (1)

Parece que no puedo encontrar una manera de hacer un Pojo Usando las anotaciones jackson-xml que generarían xml como el siguiente:

<Root> <Element1 ns="xxx"> <Element2 ns="yyy">A String</Element2> </Element1> </Root>

Lo más parecido que puedo parecer es lo siguiente:

Root POJO :

public class Root { @JacksonXmlProperty(localName = "Element1") private Element1 element1; public String getElement1() { return element1; } public void setElement1(String element1) { this.element1 = element1; } }

Element1 POJO :

public class Element1 { @JacksonXmlProperty(isAttribute = true) private String ns = "xxx"; @JacksonXmlProperty(localName = "Element2") private Element2 element2; public String getElement2() { return element2; } public void setElement2(String element2) { this.element2 = element2; } }

Element2 POJO :

public class Element2 { @JacksonXmlProperty(isAttribute = true) private String ns = "yyy"; private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } }

Pero esto devuelve lo siguiente:

<Root> <Element1 ns="xxx"> <Element2 ns="yyy"><value>A String</value></Element2> </Element1> </Root>

Las etiquetas de elemento alrededor de "A String" no quiero mostrar.


Debe usar la anotación JacksonXmlText para el campo de value .

public class Element2 { @JacksonXmlProperty(isAttribute = true) private String ns = "yyy"; @JacksonXmlText private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } }

entonces XML se verá como

<Root> <Element1 ns="xxx"> <Element2 ns="yyy">A String</Element2> </Element1> </Root>