使用 jsonlib 从 JSON 转换为 XML 时出现无效字符

发布于 2024-12-12 13:27:26 字数 516 浏览 7 评论 0原文

我正在尝试使用 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 格式良好检查吗?

I'm trying to convert a JSON string to XML using jsonlib in Java.

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

The error that I get is

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

The problem here is that I have some properties in my JSON that are invalid XML characters. eg. I have a property named "$t". The XMLSerializer throws the exception while trying to create a XML tag in this name because $ is not allowed in XML tag names. Is there any way in which I can override this XML well formedness check done by the serializer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雨夜星沙 2024-12-19 13:27:26

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

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

First I'd suggest to add the language you are using (it is Java, right?).

You could override the method where it checks your XML tag name to do nothing.

顾铮苏瑾 2024-12-19 13:27:26

我查看了 json-lib XMLSerializer 的规范,令我惊讶的是,它似乎没有选项可以序列化键不是有效 XML 名称的 JSON 对象。如果是这样的话,那么我认为你需要找到一个不同的图书馆。

I took a look at the spec for the json-lib XMLSerializer and to my surprise it seems to have no option for serialising a JSON object whose keys are not valid XML names. If that's the case then I think you will need to find a different library.

故人爱我别走 2024-12-19 13:27:26

您可以循环 json.keySet (如果需要,递归地)并用有效的键替换无效的键(使用 removeadd)。

You could loop over json.keySet (recursively if necessary) and replace invalid keys with valid ones (using remove and add).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文