Я пытаюсь проанализировать бесконечный поток XML, который выглядит следующим образом:
<outer>
<foo>footext</foo>
<bar>bartext</bar>
</outer>
<outer>
<foo>footext</foo>
<bar>bartext</bar>
</outer>
<outer>
<foo>footext</foo>
<bar>bartext</bar>
</outer>
...
У меня настроен SAXParser:
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
SAXParser parser = factory.newSAXParser();
И я могу вызвать его с помощью InputStream и моей реализации Defaulthandler достаточно легко:
parser.parse(theInputStream, myHandler);
Проблема в том, что мне нужен parser.parse для фактического возврата после того, как он достигнет конечного тега </outer>
, чтобы я мог вернуть объект, который я проанализировал из xml. Причина этого в том, что мой код синтаксического анализа (в классе с именем XMLParser) вызывается в цикле, подобном следующему:
while(condition) {
Object o = xmlParser.getNextObject();
... do something with the object ...
}
Можно ли сделать возврат SAXParser из вызова parse (InputStream, DefaultHandler) до того, как он прочитает весь доступный поток?