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

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

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

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

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

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

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


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