Я пытаюсь десериализовать следующий XML:
<root>
<foo name="AAA" />
<bar name="BBB" />
<foo name="CCC" />
</root>
Мои классы Джексона:
@Data
public class Foo {
@JacksonXmlProperty(isAttribute = true)
private String name;
}
Бар идентичен, только другое имя класса. (В реальном коде они разные, это всего лишь пример).
И корневой класс
@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, используя этот код
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 самая последняя.
Что здесь происходит, и как это исправить?