Может ли VTD-XML принять строку в качестве входных данных? - PullRequest
4 голосов
/ 23 февраля 2010

Эй, я пытаюсь использовать VTD-XML для разбора XML, переданного ему в виде строки, но не могу найти, как это сделать Любая помощь будет оценена.

http://vtd -xml.sourceforge.net

Ответы [ 2 ]

5 голосов
/ 23 февраля 2010

Кажется, библиотека VTD-XML позволяет читать данные байтового массива. В этом случае я бы предложил преобразовать строку в байты, используя правильную кодировку.

Если в начале строки XML указана кодировка:

<?xml version="1.0" encoding="UTF-8"?>

Тогда используйте это:

myString.getBytes("UTF-8")

Если кодировки нет, используйте ее, чтобы VTD-XML знал, как декодировать байты:

String withHeader  = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + myString;
byte[] bytes = withHeader.getBytes("UTF-8");
VTDGen vg = new VTDGen();
vg.setDoc(bytes);
vg.parse(true);

Обратите внимание, что в последнем случае вы можете использовать любую допустимую кодировку, потому что строка, которая у вас есть в памяти, не зависит от кодировки (она в UTF-16, но когда вы запрашиваете байты, она будет преобразована).

2 голосов
/ 23 февраля 2010

VTD-XML не принимает строку, потому что строка подразумевает кодировку UCS-16, что означает, что на самом деле это не документ xml. Как определено в спецификации, xml обычно кодируется в utf-8, ascii, iso- 8859-1 или UTF-16LE или BE формат ... мой ответ имеет смысл?

...