powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как остановить SAX парсер?
19 сообщений из 19, страница 1 из 1
Как остановить SAX парсер?
    #35730001
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Разбираю очень большие XML-файлы, поэтому SAX.
Использую libxml2 из C++ программы.
Никак не могу понять, как остановить этот парсер.

Нашел такое сообщение: http://mail.gnome.org/archives/xml/2002-August/msg00236.html , но перевести его нельзя.

Exceptions из callbacks не ловятся, да я и не хочу мешать.

Мне интересен механизм библиотеки.

Спасибо.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35731269
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, как на счет libxml, а в msxml callback - это методы интерфейса. Поэтому достаточно в методе возвратить ошибочный код завершения. Например E_ABORT

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35731527
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь void callbacks.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35731778
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно, можно что-то сделать с экземпляром парсера.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35732005
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть xmlStopParser, но как получить парсер?
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35732179
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
судя по докам, контекст в хэндлеры передаётся.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35732294
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В callbacks передается пользовательский контекст(void*).
Т.е. та структура данных, которую ты хочешь.
Как наколдовать xmlParserCtxtPtr второй день понять не могу.
И в поиске тишина.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35732654
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во , как ты парсер создаёшь?
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35734071
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парсер не создавал. Использую xmlSAXUserParseMemory.
Что такое push mode не знаю.
Сейчас попробую xmlCreatePushParserCtxt.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35734411
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё можно тупо глянуть, как реализован xmlSAXUserParseMemory. Оказывается, контекст – вещь универсальная и способна связать потоки/память с sax/dom в любых комбинациях.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35735731
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Глядя в исходники, xmlSAXUserParseMemory создает тот самый парсер, который можно остановить.
Но ни одна ф-я не возвращает его.
Буду писать в mail-list.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35736662
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ты даёшь. Кто кого не возвращает? Что не понятно в xmlSAXUserParseMemory?
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35736700
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Она не возвращает ctxt = xmlCreateMemoryParserCtxt(buffer, size); =)
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35736756
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто она? Кого не возвращает xmlCreateMemoryParserCtxt?
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35736760
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И какой же сакральный смысл имеет здесь знак равно?
Код: plaintext
ctxt = xmlCreateMemoryParserCtxt(buffer, size);
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35736764
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное, я понял твою мысль. =)
Когда сам придумал. =)
Вместо вызова xmlSAXUserParseMemory() буду использовать её код.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35736823
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это знак присвоить.
Оказалось, xmlCreateMemoryParserCtxt() внутренняя ф-я библиотеки.
Остается push mode. Только он мне совсем не подходит, так как работаю с огромными файлами в памяти.
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35737042
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что, у него с этим проблемы?
...
Рейтинг: 0 / 0
Как остановить SAX парсер?
    #35737254
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблемы будут у меня =)
Есть файл в памяти, надо его быстро разобрать. Использовать временный chunk это медленно.
Смотрю xmlCreateIOParserCtxt() и переиначиваю под свой случай.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как остановить SAX парсер?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]