我的情况:
我有一个接受字节数组的方法。有问题的数组使用UTF-8编码,最初是XML消息。我希望能够使用DOM解析器重新构造此消息。我知道我可以通过使用ByteBuffer
从字节数组创建一个Document。唯一的问题是,如果我将它直接放在传递的字节数组上,它将创建一个损坏的文档(如果可能的话)。这是因为该数组是编码的XML消息,以UTF-8编码。但是,当我通过使用decode()方法解码数组时,我得到一个CharBuffer返回:
ByteBuffer encodedData = ByteBuffer.wrap(data);
CharBuffer decodedData = Charset.forName("UTF-8").decode(encodedData);
我不知道如何从这个构造Document,因为DocumentBuilder中没有定义将接受CharBuffer的parse()方法....
有人可以帮我吗?
答案 0 :(得分:5)
DocumentBuilder
有parse(InputStream is)
方法,您可以通过传入从您的字节创建的ByteArrayInputStream
来创建文档。
Document doc = DocumentBuilder.parse(new ByteArrayInputStream(data));