Russian Qt Forum
Ноябрь 22, 2024, 21:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: прервать SAX  (Прочитано 4348 раз)
17dufa
Гость
« : Январь 17, 2008, 16:38 »

Здраствуйте,
есть задача: пришел xml, надо найти в нем одно поле, прочитать значение и в зависимости от содержимого произвести некоторые действия перед отсылкой его далее. Потенциально xml могут приходить большие, строить по ним DOM - тратить кучу памяти в пустую. Так как поле лежит почти в самом начале xml есть идея использовать SAX, причем так, чтоб дойти до этого поля, и потом прервать анализ, есть ли какие-нибудь способы прервать анализ?
кажется достаточно в EndElement выдать false?
« Последнее редактирование: Январь 17, 2008, 16:50 от 17dufa » Записан
Alex03
Гость
« Ответ #1 : Январь 18, 2008, 07:59 »

Возможно обещанные в 4.4 XPath и XQuery Вам более помогут. Улыбающийся
Записан
Tonal
Гость
« Ответ #2 : Январь 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-е, так что при их использовании документ всё же грузиться в память весь. :-(
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 21.