JAXB将XML元素映射到DTO

时间:2014-09-02 18:59:03

标签: jaxb

我们可以像

那样映射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>

class MyDto {
  private List<TagA> tagAProps;
  private List<TagB> tagBProps;
  private List<TagC> tagCProps;
}

使用JAXB?我不知道如何使用注释直接将元素映射到集合类型。直接映射到POJO有五个不同的类(Root,TagA,TagB,TagC和Prop)。其中TagA,TagB和TagC都是相似的。所以我想拥有这个最低级别的课程。

1 个答案:

答案 0 :(得分:1)

您可以利用@XmlElementWrapper@XmlElement注释:

@XmlRootElement(name="root")
@XmlAccessorType(XmlAccessType.FIELD)
class MyDto {
  @XmlElementWrapper(name="tagA")
  @XmlElement(name="prop")
  private List<String> tagAProps;

  @XmlElementWrapper(name="tagB")
  @XmlElement(name="prop")
  private List<String> tagBProps;

  @XmlElementWrapper(name="tagC")
  @XmlElement(name="prop")
  private List<String> tagCProps;
}