我在解组包含有效 UTF-8 的 XML 文件时遇到一些问题,其中一些字符&
在 XML 上下文中无效。
由于文件来自使用 spotify 的 MetaData API,我无法确保它们被正确编码。
现在我知道我可以解析文件并替换所有这些实例,&
但由于这个问题可能很常见,我想知道通常如何处理这个问题?JAXB 中是否有一些辅助类或我应该使用的其他类,或者每个人都编写自己的代码来处理这个问题?
我在解组包含有效 UTF-8 的 XML 文件时遇到一些问题,其中一些字符&
在 XML 上下文中无效。
由于文件来自使用 spotify 的 MetaData API,我无法确保它们被正确编码。
现在我知道我可以解析文件并替换所有这些实例,&
但由于这个问题可能很常见,我想知道通常如何处理这个问题?JAXB 中是否有一些辅助类或我应该使用的其他类,或者每个人都编写自己的代码来处理这个问题?
你试过CDATA吗?看看这个:http ://www.w3schools.com/xml/xml_cdata.asp
对于您的用例,Spotify 正在返回无效的 XML(至少该&
字符不会转义为&
.)。您可能更愿意处理相应的 JSON 数据,而不是跳过循环。
存在许多开源 JSON 绑定实现(MOXy、Gson、Jackson、Genson、XStream 等)。其中一些允许您通过 JAXB 元数据提供映射。
如果您希望尽可能接近当前设置,可以使用 Jettison 之类的库将 JSON 转换为 StAX 事件/从 StAX 事件转换,以便 JAXB 实现可以直接使用它。
如果您使用 MOXy 作为您的 JAXB imp,您只需设置一个属性来启用 JSON 支持(我是 MOXy 负责人)。
您需要处理正确的 XML,这意味着标记值中没有魔术字符。
您的合同需要“接收良好的 XML,发送良好的 XML”。
您的客户必须正确编码和解码。你需要确保你也这样做。
当您实例化您的对象时,您需要解码(例如 & 到 &)。编组 XML 时,必须正确编码。
我不知道魔术修复。我建议你拿一把铲子开始挖掘。