Название: прервать SAX Отправлено: 17dufa от Январь 17, 2008, 16:38 Здраствуйте,
есть задача: пришел xml, надо найти в нем одно поле, прочитать значение и в зависимости от содержимого произвести некоторые действия перед отсылкой его далее. Потенциально xml могут приходить большие, строить по ним DOM - тратить кучу памяти в пустую. Так как поле лежит почти в самом начале xml есть идея использовать SAX, причем так, чтоб дойти до этого поля, и потом прервать анализ, есть ли какие-нибудь способы прервать анализ? кажется достаточно в EndElement выдать false? Название: Re: прервать SAX Отправлено: Alex03 от Январь 18, 2008, 07:59 Возможно обещанные в 4.4 XPath и XQuery Вам более помогут. :)
Название: Re: прервать SAX Отправлено: Tonal от Январь 18, 2008, 10:58 кажется достаточно в EndElement выдать false? Читаем ассистента:Цитировать bool QXmlContentHandler::endElement... Так что пойдёт, только нужно как-то отличить такой останов от ошибки.... If this function returns false the reader stops parsing and reports an error. ... Но это можно сделать с помощью errorString. 2 Alex03 Хотя теоретически ничего вроде не мешает сделать XSLT, XPath, XQuery на SAX-е, но, насколько мне известно (поправьте если ошибаюсь), они делаются таки на DOM-е, так что при их использовании документ всё же грузиться в память весь. :-( |