【问题标题】:How to keep spaces in tags when converting xml to json in Java?在Java中将xml转换为json时如何在标签中保留空格?
【发布时间】:2019-12-05 10:35:01
【问题描述】:

我有以下 xml:

<root><field>test  </field></root>

当我尝试将其转换为 json 时,

    String xmlString = "<root><field>test  </field></root>";
    String jsonString = XML.toJSONObject(xmlString, false).toString();
    System.out.println(jsonString);

结果是这样的:

{"root":{"field":"test"}}

转换时如何在字符串中保留空格?

【问题讨论】:

  • 这些空格无关紧要,许多工具都会将其删除。您可以尝试将xml:space="preserve" 属性添加到元素,或将文本包含在&lt;![CDATA[...]]&gt; 部分中。
  • 在我的原始任务中,我通过 http 请求接受 xml,我需要将其转换为 json,并在字段中保存空格。所以我必须将所有字段都转换为 CDATA?
  • 您使用的 XML 库可能具有保留空格的设置,即使 XML 没有指定。否则,如果您有多个需要保留空格的字段,我相信您可以在共享根元素上设置 xml:space="preserve" 属性,它们会继承它。这需要在解析 XML 之前完成,这是丢失空格的步骤(在规范化期间)
  • 我使用org.json 库。当我在root 节点(&lt;root xml:space="preserve"&gt;&lt;field&gt;test &lt;/field&gt;&lt;/root&gt;)上设置xml:space="preserve" 属性时,字符串中仍然没有空格:{"root":{"xml:space":"preserve","field":"test"}}
  • 我刚刚检查了库的代码,他们的 XML 解析器非常基础,既不提供保留空格的配置,也不关心 xml:space 属性。它确实保留了 CDATA 节点内的空间,所以这仍然是一种可能性

标签: java json xml


【解决方案1】:

Underscore-java 库在从 XML 转换为 JSON 时可以保留空格。我是项目的维护者。

import com.github.underscore.U;

public class MyClass {
    public static void main(String args[]) {
        System.out.println(U.xmlToJson("<root><field>test  </field></root>"));
   }
}

输出:

{
  "root": {
    "field": "test  "
  },
  "#omit-xml-declaration": "yes"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多