JAXB将XML元素映射到DTO
我们能像这样映射XML吗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&
<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;
}