2013-07-14 138 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