2011-02-18 57 views
2

我的情況: 我有一個接受字節數組的方法。所討論的數組使用UTF-8編碼,最初是一個XML消息。我希望能夠使用DOM解析器重構此消息。我知道我可以通過使用ByteBuffer從字節數組創建文檔。唯一的問題是,如果我直接在傳遞的字節數組上進行操作,它將會創建一個損壞的Document(如果可能的話)。這是因爲該數組是一種編碼爲XML的消息,以UTF-8編碼。然而,當我通過使用decode()方法的陣列解碼,我得到一個CharBuffer的返回:我可以從編碼的UTF-8字節數組創建DOM文檔嗎?

ByteBuffer encodedData = ByteBuffer.wrap(data); 
CharBuffer decodedData = Charset.forName("UTF-8").decode(encodedData); 

我不知道如何從這個構建一個文檔,因爲沒有解析()在DocumentBuilder中定義的方法將接受CharBuffer ....

任何人都可以幫助我嗎?

回答

5

DocumentBuilder有一個parse(InputStream is)方法,您可以創建您的文檔,通過傳遞從您的字節創建的ByteArrayInputStream

Document doc = DocumentBuilder.parse(new ByteArrayInputStream(data)); 
+0

就像一個註釋:這是少數情況下你*不需要指定編碼的原因之一,因爲XML數據必須包含足夠的信息來找出編碼本身(如果它是很好的,形成)。 – 2011-02-18 11:49:16

相關問題