首页 > 解决方案 > 如何使用映射到“%20”而不是“+”的空格对 XML 字符串进行编码?

问题描述

我有以下有效的 XML 文档:

<bundle><elem type="A"></elem></bundle>

我想对这个 XML 字符串进行编码,以便将其发送到第三方 Web 服务。此服务要求将 XML 编码为查询参数进行发送。我正在尝试使用 URLEncoder 对我的 XML 进行编码,如下所示:

rawXml = "<bundle><elem type=\"A\"></elem></bundle>";
encodedXML = URLEncoder.encode(rawXML, "UTF-8");

这会生成以下编码字符串:

%3Cbundle%3E%3Celem+type%3D%22A%22%3E%3C%2Felem%3E%3C%2Fbundle%3E

当我对此进行解码时,例如使用此解码器,我得到以下解码的 XML 文档:

<bundle><elem+type="A"></elem></bundle>

这确实是一份有效的文件。但是,当我将它作为查询参数发送到第三方 Web 服务时,服务会拒绝它,即使我将 Content-Type 标头设置为 application/x-www-form-urlencoded,这是 URLEncoder 使用的格式.

问题在于加号。如果我手动将此加号更改为“%20”,服务将接受我的请求。

我的问题是,有没有办法对 XML 字符串进行编码,以便将空格映射到“%20”而不是“+”?

标签: javaxmlencoding

解决方案


嗨,我认为以下链接会有所帮助 URLEncoder 无法翻译空格字符

一个问题,为什么你需要基于 URL 的编码功能来编码你的 xml?


推荐阅读