JAXB绑定嵌套元素

时间:2013-07-14 15:42:33

标签: java jaxb

我正在使用JAXB-impl。我需要能够将嵌套元素作为简单类型映射到类字段。例如:

<mapping>

    <search>
        <channel>main-channel</channel>
        <url>my-channel-url</url>
    </search>

    <items>
        <item>first</item>
        <item>second</item>
        <item>third</item>
    </items>

</mapping>

假设我需要将“url”标记绑定到类中的某个字段,这当然不起作用:

class Mapping{

    @XmlElement
    private String url;
}

@XmlElementWrapper仅适用于集合。我看过一些关于使用eclipse MOXy和利用@XmlPath的帖子,但这不是一个选项。它必须是JAXB-impl。

供参考: http://wiki.eclipse.org/EclipseLink/Examples/MOXy/XPath#Marshal_to_XML_-_MOXy_Customization_.231_-_Grouping_Element

有没有办法在不必创建这些额外嵌套类的情况下获得此映射?

1 个答案:

答案 0 :(得分:4)

使用其他类Search,但此类是私有嵌套类,不在Mapping类之外使用。
Mapping的公共API按预期返回网址

@XmlAccessorType(XmlAccessType.FIELD)
class Mapping
{
   @XmlAccessorType(XmlAccessType.FIELD)
   private static class Search
   {
      private String channel;
      private String url;
   }

   private Search search;

   public String getUrl()
   {
      return search == null ? null : search.url;
   }
}