我在解组包含有效UTF-8的XML文件时遇到一些问题,其中某些字符如&
在XML上下文中无效。
由于文件来自使用spotify的MetaData API,我无法确保它们被正确编码。
现在我知道我可以解析文件并用&
替换所有这些实例,但由于这个问题可能很常见,我想知道通常如何处理这个问题?在JAXB中是否有一些帮助类,或者我应该使用,或者每个人都编写自己的代码来处理这个问题?
答案 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时,您必须正确编码。
我不知道一个神奇的修复。我建议你拿一把铲子开始挖掘。