2014-09-02 176 views
1

我们能使用JAXB XML像JAXB将XML元素映射到DTO

<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; 
} 

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

回答

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; 
} 
+1

我觉得我的DTO应该有三个目录而不是List 正确表示我的XML和@Blaise Doughan解决方案应该工作。 – anjibcs 2014-09-02 19:30:23

+0

@anjibman - 这是正确的,我现在改变了答案,让'List '而不是'List '。 – 2014-09-02 19:36:44