2012-07-11 70 views
0

因此,我使用DocumentBuilderFactory和DocumentBuilder來解析xml。 所以它是DOM解析器。如何從一個xml中提取字節數組並將其存儲在另一個Java中

但是我試圖做的是提取字節數組數據(64位編碼的圖像)

儲存於一個對象,後來在代碼寫出來,以base64編碼另一個XML。

什麼是存儲這個在btw中的最佳方式。 將其存儲爲字符串?或者作爲ByteArray?

如何以最佳方式提取字節數組數據並將其寫出。

我沒有這方面的經驗,所以想從小組獲得意見。

更新:我給XML我沒有自帶的編碼

< byte-array > 
    ... base64 encoded image ... 
< /byte-array > 

使用解析器我有我需要存儲這個節點,問題是應該說是字節或字符串 binary64傳入XML的控制然後用新的xml將它寫出到另一個節點。再次用base64編碼。

謝謝

回答

0

圖像應該作爲字符串存儲在第一個xml中。也許是這樣的:

<img src="data:image/gif;base64,sssssssssssss"/> 

如果您需要將相同的數據寫入到第二個XML只使用已經編碼相同的字符串。如果你需要改變圖像。獲取屬性(element.getAttribute("src")),使用許多庫中的一個(apache commons codec)對其進行解碼,然後將其重新編碼爲第二個xml的字符串。

UPDATE RESPONSE:

至於你的更新。在<byte-array>元素中,你應該有純文本。它可以存儲爲文本,然後在第二個xml中用作文本。

+0

他將如何確定MIME類型而不添加不必要的代碼? – 2012-07-11 14:31:18

+0

如果OP只需要從一個xml複製到一個新的xml,那麼就不需要解碼和編碼。無需理解「」中的內容。不需要任何MIME類型。另一方面,如果OP需要理解''內部的內容,那麼應該有一些信息(或約定)在具有文件類型的地方。 – rmarimon 2012-07-11 15:16:10

0

當您需要通過基於文本的協議(如http)傳輸數據時,通常會使用Base64編碼。 Base64編碼所做的是將二進制數據編碼爲可通過基於文本的協議發送的字符集,而不存在任何編碼/解碼問題。

不知道您發送過線的XML,但是你可以使用任何的folloiwng方法

  1. 發送的base64字符串作爲簡單的字符串。但在這種情況下,編碼和解碼的責任將在發送和接收應用程序上。

  2. 使用標準base64Binaryxml type。在這種情況下,解析器將負責解碼字符串。

相關問題