如何使用注释在JAXB中处理此XML?

时间:2011-11-18 22:20:37

标签: java xml jaxb

关于如何使用注释解析JAXB中此XML的特定方面,我有2个问题。

假设我定义了一个FosterHome类......

1)对于“Children”标签,是否有办法在“Children”类中包含属性而无需创建单独的“Info”类?

2)由于“Info”标签的性能也与“ChildList”相关,我应该有两个Child类,一个没有Info,另一个有Info吗?或者有更好的方法吗?

我试图找到解析它的最佳方法。有关当前的课程集,请参阅此帖子:How do I parse this XML in Java with JAXB?

<FosterHome>
<Orphanage>Happy Days Daycare</Orphanage>
<Location>Apple Street</Location>
<Families>
    <Family>
        <ParentID>Adams</ParentID>
        <ChildList>
            <ChildID>Child1</ChildID>
            <ChildID>Child2</ChildID>
        </ChildList>
    </Family>
    <Family>
        <ParentID>Adams</ParentID>
        <ChildList>
            <ChildID>Child3</ChildID>
            <ChildID>Child4</ChildID>
        </ChildList>
    </Family>
</Families>
<Children>
    <ChildID>Child1</ChildID>
    <Info>
       <Age>6</Age>
       <FavColor>Blue</FavColor>
    </Info>
    <ChildID>Child2</ChildID>
    <Info>
       <Age>8</Age>
       <FavColor>Red</FavColor>
    </Info>
    ...
</Children>
</FosterHome>

1 个答案:

答案 0 :(得分:1)

要回答#1,您可能需要使用MOXy。有了它,您可以使用@XPath获取agefavColor。事实上,@ Breise Doughan是你可能想和他交谈的人(他回答了你以前的帖子),因为他是MOXy项目的团队负责人......在这个论坛上也很活跃。以下是与您类似的用法示例:With MOXy and XPath, is it possible to unmarshal a list of attributes?

对于#2,您的XML结构看起来很奇怪。如果允许您更改XML,我会将子年龄和喜欢的颜色与子名称一起添加,如下所示: -

...
<Family>
    <ParentID>Adams</ParentID>
    <ChildList>
        <ChildID name="Child1" age="6" favColor="Blue"/>
        <ChildID name="Child2" age="8" favColor="Red"/>
    </ChildList>
</Family>
...