2016-03-29 5 views
0

Я знаю, что парсер Java stax работает с InputStreams. Тем не менее, мне нужно будет вручную нажимать куски строк на парсер вместо входного потока.Как передать парсер Java stax кусками строк, а не InputStreams?

Возможно ли это?

С наилучшими пожеланиями,

+0

Если API не предоставляет методы, которые принимают строки обернуть строки в входных потоков: [Как превратить строку поток в java?] (http://stackoverflow.com/q/247161/637853) – Thomas

+0

Мне нужно кормить непрерывные патроны строк. Поэтому мне нужно иметь только 1 считыватель xmlinputstream, и когда у меня есть больше фрагментов строки, которые мне нужно извлечь. – adragomir

+0

В этом случае укажите свою собственную реализацию потока, которая по мере необходимости извлекает новые куски в свой метод 'read()'. – Thomas

ответ

0

Вы можете использовать ByteArrayInputStream обертки вокруг байт ваших String кусков.

Быстрый пример

XMLInputFactory factory = XMLInputFactory.newFactory(); 
XMLStreamReader reader = factory.createXMLStreamReader(
    new ByteArrayInputStream("<start></start>".getBytes("UTF-8")) 
); 
while (reader.hasNext()) { 
    int event = reader.next(); 
    switch (event) { 
    case (XMLStreamConstants.START_ELEMENT): { 
     System.out.println(reader.getLocalName()); 
     break; 
    } 
    } 
} 

Выход

start 
+0

Мне нужно кормить непрерывные патроны струн. Поэтому мне нужно иметь только 1 считыватель xmlinputstream, и когда у меня есть больше фрагментов строки, которые мне нужно извлечь. – adragomir