2011-05-21 74 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