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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: SAX-анализатор XML-документа  (Прочитано 4355 раз)
BigHom
Гость
« : Октябрь 29, 2012, 07:16 »

Такая проблема , есть файл в котором несколько документов начинающихся со строчками
<?xml version="1.0" encoding="koi8-r"?>

при вызове SAX-анализатора обрабатывается только 1-й документ из файла , остальные документы как бы игнорируются.
Вопрос: если способ последовательно анализировать документы, находящиеся в одном файле иной , чем в ручную поиск по файлу данных строк : <?xml version="1.0" encoding="koi8-r"?> сравнением , записью в отдельный файл и вызова только тогда SAX-анализатора?
Записан
Bepec
Гость
« Ответ #1 : Октябрь 29, 2012, 07:27 »

Эмм.. Прочитать в память, разделить на 2 строки, дать обе SAX парсеру?

По идее у него логика работы правильная. Это у вас файл неправильный получается. Улыбающийся
Записан
BigHom
Гость
« Ответ #2 : Октябрь 29, 2012, 07:58 »

Изначально в файле несколько документов , вопрос - как "разделить на две строки"? То есть из файла считать в строку и в строке искать начало каждого документа? Выделяя каждый документ в другую, отдельную строку , чтобы потом дать на обработку SAX-анализатору?

Если подробнее , то от сервера получаю информацию и записываю в файл, а потом смотрю что там. И получается , когда там несколько документов принято, то вызывая SAX-анализатор, видится только первый принятый документ , а остальные не видятся так как встречается закрытие документа и как бы анализатор дальше не смотрит...(на сколько я понял)
« Последнее редактирование: Октябрь 29, 2012, 08:18 от BigHom » Записан
Bepec
Гость
« Ответ #3 : Октябрь 29, 2012, 08:24 »

Это же логично. SAX анализирует промежуток между началом и концом xml. То, что у вас в файле несколько файлов xml сжаты, значит вам надо ручками делить на строки.

Или же дописать своего наследника SAX парсера.(но руками помоему проще).

Простейший код поиска
Код:
QString receiveContent; // принятые данные
if (receiveContent.count("Тут xml заголовок") > 1)
  // тут делим строку.
// далее суём парсеру по очереди, пока строки не кончатся.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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