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