在解组时处理JAXB中的转义字符

时间:2013-10-11 10:55:08

标签: java jaxb unmarshalling html-escape-characters

我在解组包含有效UTF-8的XML文件时遇到一些问题,其中某些字符如&在XML上下文中无效。

由于文件来自使用spotify的MetaData API,我无法确保它们被正确编码。

现在我知道我可以解析文件并用&替换所有这些实例,但由于这个问题可能很常见,我想知道通常如何处理这个问题?在JAXB中是否有一些帮助类,或者我应该使用,或者每个人都编写自己的代码来处理这个问题?

3 个答案:

答案 0 :(得分:1)

你试过CDATA吗? 看看这个:http://www.w3schools.com/xml/xml_cdata.asp

答案 1 :(得分:1)

对于您的用例,Spotify返回的是无效的XML(至少&字符不会被转义为&。您可能更愿意处理相应的JSON数据而不是跳过箍。 / p>

存在许多开源JSON绑定实现(MOXy,Gson,Jackson,Genson,XStream等)。其中一些允许您通过JAXB元数据提供映射。

如果您希望尽可能接近当前设置,可以使用像Jettison这样的库将JSON转换为/从StAX事件转换,以便JAXB实现可以直接使用它。

如果你使用MOXy作为你的JAXB imp,你需要选择单个属性来启用JSON支持(我是MOXy领导)。

答案 2 :(得分:0)

您需要处理正确的XML,这意味着标记值中没有魔术字符。

您的合同需要“收到良好的XML,发送好的XML。”

您的客户必须正确编码和解码。你需要确保你也这样做。

在实例化对象时需要解码(例如& to&)。当您编组XML时,您必须正确编码。

我不知道一个神奇的修复。我建议你拿一把铲子开始挖掘。