XML-аннотации Джексона: элемент String с атрибутом
Я не могу найти способ сделать Pojo Используя аннотации jackson-xml, которые будут генерировать xml следующим образом:
<Root>
<Element1 ns="xxx">
<Element2 ns="yyy">A String</Element2>
</Element1>
</Root>
Ближайшим, к которому я могу прийти, является следующее:
Корневой POJO:
public class Root {
@JacksonXmlProperty(localName = "Element1")
private Element1 element1;
public String getElement1() {
return element1;
}
public void setElement1(String element1) {
this.element1 = element1;
}
}
Элемент 1 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;
}
}
Элемент2 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;
}
}
Но это возвращает обратно следующее:
<Root>
<Element1 ns="xxx">
<Element2 ns="yyy"><value>A String</value></Element2>
</Element1>
</Root>
Теги элементов вокруг "A String" я не хочу отображать.
Ответы
Ответ 1
Вы должны использовать аннотацию JacksonXmlText для поля 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;
}
}
то XML будет выглядеть так:
<Root>
<Element1 ns="xxx">
<Element2 ns="yyy">A String</Element2>
</Element1>
</Root>