Кажется, библиотека 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, но когда вы запрашиваете байты, она будет преобразована).