JAXB将XML元素映射到DTO

JAXB将XML元素映射到DTO,jaxb,Jaxb,我们能像这样映射XML吗 <root> <tagA> <prop>111</prop> <prop>222</prop> <prop>333</prop> <prop>444</prop> </tagA> <tagB> <prop>555</prop> <prop&

我们能像这样映射XML吗

<root>
  <tagA>
    <prop>111</prop>
    <prop>222</prop>
    <prop>333</prop>
    <prop>444</prop>
  </tagA>
  <tagB>
    <prop>555</prop>
    <prop>666</prop>
  </tagB>
  <tagC>
    <prop>777</prop>
  </tagC>
</root>

111
222
333
444
555
666
777

类MyDto{
私人名单;
私有列表tagBProps;
私有列表标记操作;
}

使用JAXB?我不知道如何使用注释将元素直接映射到集合类型。到POJO的直接映射有五个不同的类(Root、TagA、TagB、TagC和Prop)。其中TagA、TagB和TagC都是相似的。因此,我希望有这个最小数量的类。

您可以利用
@xmlementwrapper
@xmlement
注释来实现:

@XmlRootElement(name=“root”)
@XmlAccessorType(XmlAccessType.FIELD)
类MyDto{
@XmlElementWrapper(name=“tagA”)
@xmlement(name=“prop”)
私人名单;
@XmlElementWrapper(name=“tagB”)
@xmlement(name=“prop”)
私有列表tagBProps;
@XmlElementWrapper(name=“tagC”)
@xmlement(name=“prop”)
私有列表标记操作;
}

我认为我的DTO应该有三个列表而不是列表来正确表示我的XML,@Blaise Doughan解决方案应该有效。@anjibman-没错,我现在将答案改为有
List
而不是
List
class MyDto {
  private List<TagA> tagAProps;
  private List<TagB> tagBProps;
  private List<TagC> tagCProps;
}