Java JAXB注释将XML内容绑定为字符串

Java JAXB注释将XML内容绑定为字符串,java,jaxb,Java,Jaxb,我想将XML内容作为字符串绑定到字段。 下面是我的xml的样子: <sample> <content> <p>here is content <b>with bold</b></p> </content> </sample> 解组后,我希望将内容以字符串类型绑定为,以便使用HTML标记保留格式化文本,以便: System.out.println(sample.get

我想将XML内容作为字符串绑定到字段。 下面是我的xml的样子:

<sample>
    <content>
         <p>here is content <b>with bold</b></p>
    </content>
</sample>
解组后,我希望将内容以字符串类型绑定为
,以便使用HTML标记保留格式化文本,以便:

System.out.println(sample.getContent()); 
必须给出以下信息:

> "<p>here is content <b>with bold</b></p>"
“这里是粗体内容

使用@XmlElement注释,我从绑定操作中只得到空字符串“”,因为JAXB根据我的理解将以“
”开头的元素识别为要绑定的对象


有什么建议吗

尝试使用带有自定义
DomHandler
@xmlanyement
注释。您可以找到一个示例。

尝试使用带有自定义
DomHandler
@xmlanyement
注释。您可以找到一个示例。

如果它是一个更改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>

内容为粗体/b/p

如果可以选择更改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>

内容为粗体/b/p

同意。如果需要在
节点中将
标记作为文本处理,则XML开头无效。它需要逃走,是的。另一个选择应该是使用CDATA。但据我所知,JAXB在编写CDATA元素时遇到了问题。@joergl:谢谢你的建议。问题是,我想要绑定的xml是StaX解析器的结果,并且实体已经通过StaX API进行了转义:-S对于每个样本(大约有100.000个样本),转义“”S的元素将成为解析器中的瓶颈。PS:我尝试解析大约1GB的xml。为了提高性能和减少内存使用,我将样本作为块读取并立即绑定它们。如果您处理这种大小的文件,使用StaX或SAX而不是JAXB可能会更好。StaX和SAX按顺序解析文件元素,这样就不太可能出现OutOfMemoryError。同意。如果需要在
节点中将
标记作为文本处理,则XML开头无效。它需要逃走,是的。另一个选择应该是使用CDATA。但据我所知,JAXB在编写CDATA元素时遇到了问题。@joergl:谢谢你的建议。问题是,我想要绑定的xml是StaX解析器的结果,并且实体已经通过StaX API进行了转义:-S对于每个样本(大约有100.000个样本),转义“”S的元素将成为解析器中的瓶颈。PS:我尝试解析大约1GB的xml。为了提高性能和减少内存使用,我将样本作为块读取并立即绑定它们。如果您处理这种大小的文件,使用StaX或SAX而不是JAXB可能会更好。StaX和SAX以明智的方式解析文件元素,这使得OutOfMemoryError不太可能发生。非常好。刚刚编写了我自己的DomHandler,它工作得非常出色。我刚写了我自己的DomHandler,它很有效