2013-07-14 198 views
1

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

<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

有没有办法让这个映射,而无需创建这些额外的嵌套类?

+0

为什么不创建嵌套类? –

+0

这可能是一个选项。但是,访问字段如: mapping.getUrl(); 比: mapping.getNestedClass.getUrl(); 我不确定创建嵌套类是否有意义,只是为了满足JAXB。我不想创建嵌套类,但我最终可能不得不创建它。 – Mansour

+0

你需要读写XML还是只读? –

回答

3

附加类Search,但是这个类是私有嵌套类,并且不在Mapping类之外使用。
Mapping回报URL的公共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; 
    } 
} 
+0

非常感谢! – Mansour