【问题标题】:How to encode an XML string with spaces mapped to "%20" rather than '+'? [duplicate]如何使用映射到“%20”而不是“+”的空格对 XML 字符串进行编码? [复制]
【发布时间】:2020-04-09 23:50:04
【问题描述】:

我有以下有效的 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

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

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

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

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

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

【问题讨论】:

  • 如果你用 URLEncoder 编码,用URLDecoder 解码不是有意义吗?

标签: java xml encoding


【解决方案1】:

您好,我认为以下链接会有所帮助 URLEncoder not able to translate space character

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

【讨论】:

  • 为什么需要基于 URL 的编码?我不知道我需要这样做,但我不知道有其他选择。我应该使用 XML 编码库吗?
  • @edorld URL 编码器基本上是用来构造带有某些符号的 URL,其原始形式将不被支持。如果您将 xml 作为请求参数传递,那么这将适合您。
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 2021-08-04
  • 2011-04-14
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
相关资源
最近更新 更多