You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jackson XML解析不同标签数组异常问题求助

解决Jackson解析XML时非连续同名元素列表只保留最后一个的问题

问题原因

你的XML中<A>元素被<B>元素分隔,并非连续出现。Jackson默认处理无包裹的同名列表元素时,仅会收集连续的元素;遇到非连续的同名元素时,会用后续元素覆盖之前的,最终只保留最后一个<A>。而<B>元素是连续的,所以能正常解析出所有元素。

解决方案

在Type类的List<A>字段的@JacksonXmlProperty注解中添加indexed = false参数,明确告知Jackson要收集所有同名的<A>元素,无论位置是否连续。

修改后的Type类代码:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Type {

  @JacksonXmlElementWrapper(useWrapping = false)
  @JacksonXmlProperty(localName = "A", indexed = false)
  private List<A> a;

  @JacksonXmlElementWrapper(useWrapping = false)
  @JacksonXmlProperty(localName = "B")
  private List<B> b;
}

验证效果

修改后重新解析XML,就能正确获取所有<A>元素,解析结果会变为:

Test(type=Type(a=[A(name=A1), A(name=A2), A(name=A3)], b=[B(value=B1), B(value=B2)]))

内容的提问来源于stack exchange,提问作者Sung.P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:17:07