4

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

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

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

4

3 回答 3

1

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

于 2013-10-11T11:00:05.580 回答
1

对于您的用例,Spotify 正在返回无效的 XML(至少该&字符不会转义为&.)。您可能更愿意处理相应的 JSON 数据,而不是跳过循环。

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

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

如果您使用 MOXy 作为您的 JAXB imp,您只需设置一个属性来启用 JSON 支持(我是 MOXy 负责人)。

于 2013-10-11T12:22:21.763 回答
0

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

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

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

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

我不知道魔术修复。我建议你拿一把铲子开始挖掘。

于 2013-10-11T11:02:47.133 回答