2012-08-30 90 views
1

我的問題是:從xml方案:如何設置Jaxb XML元素的值?

<topnode> 
    topNodeValue 
    <bottomnode/> 
</topnode> 

與JAXB生成的類看起來像

class topnode { 
    List<bottomnode> bottomnodeList; 
} 

不產生值字段爲topnode設定值。

我該如何實現這個目標?謝謝。

回答

2

當一個元素的內容包含字符和元素數據時,它被稱爲混合內容。在此JAXB (JSR-222)映射與@XmlMixed註釋,如:

class topnode { 
    @XmlMixed 
    String text; 

    List<bottomnode> bottomnodeList; 
} 

使用的混合內容可能會非常棘手,因爲你可能會由於用於格式化文本節點意想不到的效果。有關更詳細的解釋,請參閱以下對類似問題的回答。

0

對於文本節點,使用@XmlValue註解。事情是這樣的:

class topnode { 

    @XmlValue 
    String topNodeValue; 

    List<bottomnode> bottomnodeList; 

} 

作爲一個建議,儘量尊重Java命名標準,如果不符合XML元素使用@Xml...註釋的name屬性。

+0

因爲'bottomnodeList'屬性映射到XML元素,所以如果您嘗試使用「@ XmlElement」,您將會遇到異常。 OP正試圖映射混合​​內容,所以應該使用'@ XmlMixed'來代替'@ XmlValue'。以下應該有所幫助:http://stackoverflow.com/a/11099303/383861 –

+1

@BlaiseDoughan謝謝!我不知道'@ XmlMixed',因爲我從不需要它。我想你應該把這個評論作爲答案,你一定會從我這裏得到一個。 – tibtof

+0

完成:http://stackoverflow.com/a/12195420/383861 –