Java 如何使用映射到“%的空格对XML字符串进行编码20“;而不是'+';?

Java 如何使用映射到“%的空格对XML字符串进行编码20“;而不是'+';?,java,xml,encoding,Java,Xml,Encoding,我有以下有效的XML文档: 我想对这个XML字符串进行编码,以便将其发送到第三方web服务。此服务要求将XML作为查询参数进行编码发送。我正在尝试使用URLEncoder对XML进行编码,如下所示: rawXml=”“; encodedXML=URLEncoder.encode(rawXML,“UTF-8”); 这将生成以下编码字符串: %3Cbundle%3E%3Celem+type%3D%22A%22%3E%3C%2Felem%3E%3C%2Fbundle%3E 当我解码时,例如使用

我有以下有效的XML文档:


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

rawXml=”“;
encodedXML=URLEncoder.encode(rawXML,“UTF-8”);
这将生成以下编码字符串:

%3Cbundle%3E%3Celem+type%3D%22A%22%3E%3C%2Felem%3E%3C%2Fbundle%3E
当我解码时,例如使用,我得到以下解码的XML文档:


这确实是一份有效的文件。但是,当我将其作为查询参数发送给第三方web服务时,服务会拒绝它,即使我将内容类型头设置为application/x-www-form-urlencoded,这是URLEncoder使用的格式

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


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

嗨,我认为下面的链接会有所帮助


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

为什么需要基于URL的编码?我不知道我需要这样做,但我不知道还有别的选择。我应该使用XML编码库吗?@edoreld URL编码器基本上是用某些原始形式的符号构造URL,但不支持。如果您将xml作为请求参数传递,那么这将适合您。如果您使用URLCoder编码,那么使用URLCoder解码是否有意义?