JAXB Annotation将XML内容绑定为String

时间:2012-05-31 13:50:25

标签: java jaxb

我想将XML内容作为String绑定到字段中。 这是我的xml的样子:

<sample>
    <content>
         <p>here is content <b>with bold</b></p>
    </content>
</sample>

应绑定到以下域对象:

@Entity
@Table(name="news_table")
@XmlRootElement
class Sample {
     @XmlElement(name="content")
     @Column(name="news_content")
     private String content; 
}

解组之后,我想将内容以<p>作为字符串类型绑定,以便使用HTML标记保留带格式的文本,以便:

System.out.println(sample.getContent()); 

必须提供以下内容:

> "<p>here is content <b>with bold</b></p>"

使用@XmlElement注释我只从绑定操作返回空字符串“”,因为JAXB根据我的理解识别元素以“<p>”作为Object绑定。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

尝试将@XmlAnyElement注释与自定义DomHandler一起使用。您可以找到示例here

答案 1 :(得分:2)

如果是更改xml文件内容的选项,则可以转义<>。然后JAXB处理它就好了,你在java中调用getContent()时也得到了正确的html字符串。

以下是包含转义内容的xml文件:

<sample>
 <content>&lt;p&gt;here is content &lt;b&gt;with bold&lt;/b&gt;&lt;/p&gt;</content>
</sample>