2012-08-30 62 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 –