Я пытаюсь десериализовать следующие XML:
<root>
<foo name="AAA" />
<bar name="BBB" />
<foo name="CCC" />
</root>
Мои классы Джексона:
@Data
public class Foo {
@JacksonXmlProperty(isAttribute = true)
private String name;
}
Бар идентичен, просто другое имя класса. (В реальном коде они разные, это просто пример).
А класс root равен
@Data
public class Root {
@JacksonXmlProperty(localName = "foo")
@JacksonXmlElementWrapper(useWrapping = false)
private List<Foo> foos;
@JacksonXmlProperty(localName = "bar")
@JacksonXmlElementWrapper(useWrapping = false)
private List<Bar> bars;
}
Когда я пытаюсь десериализовать XML, используя это code
System.out.println(new XmlMapper().readValue(theXml, Root.class));
Результат следующий (обратите внимание на отсутствие «AAA»):
Root(foos=[Foo(name=CCC)], bars=[Bar(name=BBB)])
Однако, если я перемещу поля в XML так, чтобы оба foo
теги расположены рядом друг с другом, он печатает
Root(foos=[Foo(name=AAA), Foo(name=CCC)], bars=[Bar(name=BBB)])
Я использую jackson-dataformat- xml 2.11.1, который является последним.
Что здесь происходит, и как это исправить?