2011-05-21 75 views
0

我有一个用java写的SOAP web服务,通​​过XML-utf-8进行通信。需要编码的xml值?

我生成的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); 

回答

0

我产生XML的属性值应包含HTML和/或普通的文本与多余的字符,所以是一个很好的做法/或需要安全有之前,我开始构建我的XML我的XML值编码?

完全取决于你使用的是创建了XML是什么:

  • 如果要创建一个DOM和序列化,那么你就不需要事先编码的属性值。

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

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

“良好做法”并未纳入其中。如果你需要这样做,你就可以做到。否则,你不能这样做。

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


的底线是,没有一般答案。您需要了解您正在使用的中间件技术的具体要求。 javadoc和其他API文档/教程是第一个寻找答案的地方。

+0

我使用spring-ws和jdom – Spring 2011-05-22 13:23:37

+0

@jan - 我不希望这些要求您编码属性。但我确信这些要求已经在javadocs和其他文档中明确规定。我建议你看看。 – 2011-05-22 13:29:01

1

如果你使用任何类型的Web服务架构包的话,那就是包拿这一切的护理工作,而且也没有理由为你做到这一点。此外,另一端很可能是而不是,以扭转这一过程,最终陷入混乱,除非你控制两端。

+0

我使用spring-ws,所以我不需要编码任何东西?我也写了一个Java桌面客户端,它崩溃时,我不这样编码,请检查代码 – Spring 2011-05-22 00:07:51