【发布时间】:2020-08-02 19:39:01
【问题描述】:
我正在尝试反序列化以下 XML:
<root>
<foo name="AAA" />
<bar name="BBB" />
<foo name="CCC" />
</root>
我的杰克逊课程是:
@Data
public class Foo {
@JacksonXmlProperty(isAttribute = true)
private String name;
}
Bar 是相同的,只是类名不同。 (在实际代码中它们是不同的,这只是一个例子)。
而根类是
@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,这是最新的。
这是怎么回事,我该如何解决?
【问题讨论】:
标签: java jackson jackson-dataformat-xml