【问题标题】:How to Handle this XML in JAXB with annotations?如何使用注释在 JAXB 中处理此 XML?
【发布时间】:2011-11-18 22:20:36
【问题描述】:

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

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

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

2) 由于“Info”标签的属性也与“ChildList”相关,我是否应该有两个子类,一个没有 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>

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

    要回答 #1,您可能需要使用 MOXy。这样,您可以使用@XPath 来获取agefavColor。事实上,@Blaise 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>
    ...
    

    【讨论】:

    • +1 - 这里是一些其他 MOXy @XmlPath 示例的链接:blog.bdoughan.com/search/label/XmlPath
    • 我无法更改 XML 结构。该链接看起来像 XmlPath 从多个文件中获取内容。如何将它应用于我的带有单个 XML 的示例?
    猜你喜欢
    • 2016-08-31
    • 2014-11-03
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多