2012-04-19 54 views
2

我有以下問題。我有使用Jersey的Web服務,它可以產生2種返回數據 - XML和JSON。'"'而不是普通引號(「」)從澤西返回XML

@GET 
@Produces({"application/xml","application/json"}) 

返回數據還包含有引號"",如果返回的數據類型是JSON,比一切正常的字符串 - 字符串與正常報價返回"",但如果返回的數據類型是XML,比串"已退回。

問題是,在客戶端的字符串與正常""報價是預期的。請幫助解決這個問題。

期望的字符串例子:

{"key1":"value1","key2":"value2"} 
+1

爲什麼這是一個問題? XML解析器應將「"」解釋爲引號字符。 Jersey可能對元素內容中的所有內容進行編碼,而不僅僅是在屬性內容中編碼引號。 (或者只是爲了確保或簡化代碼。) – millimoose 2012-04-19 12:34:34

+0

這不是問題。這是正確的XML行爲,或者至少從你所說的*聽起來*正確的行爲。也許你認爲輸出不正確的例子會有所幫助。 – 2012-04-19 12:34:55

+0

我知道這是正確的行爲,但在客戶端普通字符串與正常(「」)報價是預期的。所以這是一個問題=( – 2012-04-19 12:39:21

回答

1

你可能想看看:Can I force JAXB not to convert " into ", for example, when marshalling to XML?

(JAX-RS使用JAXB)。

我知道&「和&;可能會有問題,因爲我看到一些較舊的XML系統做了奇怪的事情(包括古老的IE 7)。

+0

感謝您的建議,但是我怎樣才能使用該方法關於我使用澤西上下文的網絡服務? – 2012-04-19 12:53:39

+0

@VladimirSelin Jersey實現JAX-RS,它使用JAXB for XML(你應該知道) – 2012-04-19 12:56:38

+0

我知道=)。問題是 - 如果你可以告訴我,我可以'告訴'澤西島應該使用哪個JAXBFactory,就像我的應用程序一樣。球衣本身就是一切。在此先感謝) – 2012-04-19 13:10:42

0

XML用於程序到程序的通信。 "裏面的字符數據與"有相同的含義。

在試圖分析「返回數據」的程序中,您是否遇到過一些問題?

+0

是的,正常引號的普通字符串預計在客戶端。 – 2012-04-19 12:40:05

+0

@VladimirSelin期望什麼?客戶端運行的是什麼,爲什麼它不能解析格式良好的XML?你解決了錯誤的問題;實際的問題不是服務器端用'"替換引號'(它給了你一個有效的XML),但是客戶端沒有處理這樣的XML,也可能暗示客戶端的一些更深層的問題,比如各種注入的漏洞。 – penartur 2012-04-20 08:08:20