2014-09-02 149 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