Могу ли я создать документ DOM из закодированного массива байтов UTF-8? - PullRequest
2 голосов
/ 18 февраля 2011

Моя ситуация: у меня есть метод, который принимает байтовый массив.Рассматриваемый массив кодируется с использованием UTF-8 и изначально представлял собой сообщение XML.Я хотел бы иметь возможность восстановить это сообщение с помощью анализатора DOM.Я знаю, что могу создать документ из байтового массива с помощью ByteBuffer.Единственная проблема заключается в том, что, если я введу это непосредственно в действие с переданным байтовым массивом, он создаст поврежденный документ (если это вообще возможно).Это потому, что массив является закодированным сообщением XML, закодированным в UTF-8.Однако, когда я декодирую массив с помощью метода decode (), я получаю возвращенный CharBuffer:

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

Я не знаю, как построить Document из этого, так как нет разбора() методы, определенные в DocumentBuilder, которые будут принимать CharBuffer ....

Может ли кто-нибудь помочь мне с этим?

1 Ответ

5 голосов
/ 18 февраля 2011

DocumentBuilder имеет метод parse(InputStream is), вы можете создать документ, передав ByteArrayInputStream, созданный из ваших байтов.

Document doc = DocumentBuilder.parse(new ByteArrayInputStream(data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...