Я пытаюсь настроить Aalto-xml (Woodstox) в среде Async, но у вас возникли проблемы с выяснением того, как это сделать правильно!Использование Aalto-xml для создания нового буфера для каждого XML
Мой поток:
Предварительно выделить 'AsyncStreamReader'
xmlInputFactory.createAsyncForByteArray();
получающего поток XML из гнезда
поток StreamReader с данными
streamReader.getInputFeeder().feedInput(bytes, 0, bufSize);
разбирает различные теги XML в цикле:
while (streamReader.hasNext()) {...}
XMLEvent.END_ELEMENT
После последнего разбора -> Invoke:streamReader.getInputFeeder().endOfInput();
После
XMLEvent.END_DOCUMENT
сделать:streamReader = xmlInputFactory.createAsyncForByteArray();
AsyncXMLStreamReader.EVENT_INCOMPLETE
-> Разрыв цикла и ожидание получения данных для подачи анализатора.
Я делаю это так, хотя я знаю, что это неправильно, потому что если я не позвоню: «endOfInput()», то при кормлении читателя с новым буфером он бросает исключение, как я не сделал с предыдущий xml.
Точка, которая меня не устраивает, заключается в том, что для получения END_DOCUMENT вы должны позвонить endOfInput()
, который закрывает буфер, поэтому вы не можете его подавать с большим количеством входных данных, которые поступают из сокета ... Я застрял в цикле здесь!
Как исправить мой поток?
Вот Сущностью с кодом синтаксического анализатора: https://gist.github.com/shvalb/ca9cd526aea31ccf280adf289e0991d7