我有来自客户的xml:
<a>
<b id="id1"/>
<any-tag/>
<b id="id2"/>
</a>
简单的Java类
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.ToString;
import java.util.List;
@ToString
public class A {
@ToString
public static class B {
public String id;
}
@JacksonXmlProperty(localName = "b")
@JacksonXmlElementWrapper(useWrapping = false)
public List<B> bList;
}
当杰克逊完成解析时,我有结果
A(bList=[A.B(id=id2)])
很明显,我只获得了第二个标签,但预计 bList 中有2个标签。我意识到这是因为 any-tag 标签位于第一个和第二个标签B之间。
如何读取列表中的所有B标签? PS标签A包含其他应该阅读的内容。
我正在使用:
'com.fasterxml.jackson.core:jackson-databind:2.5.1',
'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.5.1',
'org.codehaus.woodstox:woodstox-core-asl:4.1.4',
答案 0 :(得分:0)
从2.9版开始,引入了 @JsonMerge 批注。 以下将每次出现的节点 b 聚合到bList中:
@JacksonXmlProperty(localName = "b")
@JsonMerge()
public List<B> bList;