【问题标题】:Invalid character while converting from JSON to XML using jsonlib使用 jsonlib 从 JSON 转换为 XML 时出现无效字符
【发布时间】:2011-10-28 11:21:40
【问题描述】:

我正在尝试使用 Java 中的 jsonlib 将 JSON 字符串转换为 XML。

    JSONObject json = JSONObject.fromObject(jsonString); 
    XMLSerializer serializer = new XMLSerializer();
    String xml = serializer.write( json );  
    System.out.println(xml);

我得到的错误是

    nu.xom.IllegalNameException: 0x24 is not a legal NCName character

这里的问题是我的 JSON 中有一些属性是无效的 XML 字符。例如。我有一个名为“$t”的属性。 XMLSerializer 在尝试以此名称创建 XML 标记时抛出异常,因为 XML 标记名称中不允许使用 $。有什么方法可以覆盖序列化程序完成的 XML 格式良好检查?

【问题讨论】:

  • 为什么要覆盖该检查(并生成无效的 xml)?
  • 我正在尝试使用 Google REST API。触发 web 服务后,我得到一个 JSON 响应。我有一个在树结构中显示 XML 的树查看器。所以我必须将 JSON 转换为 XML 以将其显示为树。但在 JSON 中,“$”是一个有效的属性名称。 Google API 返回属性名称,如“$t”、“gCal$timesCleaned”等。所以在将其转换为 XML 时出现错误。

标签: java xml json xml-serialization json-lib


【解决方案1】:

首先我建议添加您正在使用的语言(它是 Java,对吗?)。

您可以覆盖检查您的 XML 标记名称的方法以不执行任何操作。

【讨论】:

    【解决方案2】:

    我查看了 json-lib XMLSerializer 的规范,令我惊讶的是,它似乎没有用于序列化其键不是有效 XML 名称的 JSON 对象的选项。如果是这种情况,那么我认为您将需要找到一个不同的库。

    【讨论】:

      【解决方案3】:

      您可以遍历json.keySet(必要时递归)并将无效键替换为有效键(使用removeadd)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 2021-10-31
        相关资源
        最近更新 更多