Java 需要编码的xml值吗?

Java 需要编码的xml值吗?,java,xml,web-services,encoding,Java,Xml,Web Services,Encoding,我有一个用java编写的SOAP web服务,通过XML-utf-8进行通信 我生成的xml属性值应该包含html和/或带有额外字符的普通文本,因此,在开始构建xml之前对xml值进行编码是否是一种良好的做法/或安全需要 对于实体类中的每个值都是这样的?还是另一种意见 String encodedString = URLEncoder.encode(s, "UTF-8"); 对于客户: ByteArrayInputStream stream = new ByteArrayInputStream

我有一个用java编写的SOAP web服务,通过XML-utf-8进行通信

我生成的xml属性值应该包含html和/或带有额外字符的普通文本,因此,在开始构建xml之前对xml值进行编码是否是一种良好的做法/或安全需要

对于实体类中的每个值都是这样的?还是另一种意见

String encodedString = URLEncoder.encode(s, "UTF-8");
对于客户:

ByteArrayInputStream stream = new ByteArrayInputStream(
            response.getBytes("UTF-8"));
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(stream);

如果您使用的是任何类型的web服务框架包,那么该包的工作就是处理所有这些,您没有理由这样做。此外,另一端很可能不会逆转这一过程,最终导致混乱,除非你控制两端

我生成的xml属性值应该包含html和/或带有额外字符的普通文本,因此,在开始构建xml之前对xml值进行编码是否是一种良好的做法/或安全需要

它完全取决于您用来创建XML的内容:

  • 如果要创建DOM并序列化它,则不需要事先对属性值进行编码

  • 如果您使用的是web服务框架或XStream或类似的东西,那么您可能不需要事先编码属性值

  • 如果您是通过连接字符串来创建XML,那么您确实需要对属性进行编码

“良好实践”不包括在内。如果你需要做,你就去做。否则你就不能这样做

当您在另一端读取/解析XML时,同样的参数也适用



底线是没有一般的答案。您需要了解所使用的中间件技术的特定需求。javadocs和其他API文档/教程是寻找答案的第一个地方。

我使用SpringWS,所以我不需要编码任何东西?而且我正在编写一个java桌面客户端,当我不这样编码时它会崩溃,请检查code@jan-我不认为这两种方法都需要对属性进行编码。但是我确信javadocs和其他文档中已经清楚地列出了这些需求。我建议你看看。