Привет!
Пытаюсь работать с сабжем, два вопроса:
— как изнутри остановить процесс разбора? Например, накопилось некоторое количество логических ошибок, парсить дальше смысла нет.
— как использовать xmlCreateIOParserCtxt? Создать-то я его создал, но как потом запустить процесс парсинга? Сейчас написал через xmlCreatePushParserCtxt/xmlParseChunk, но это не так красиво
SergH wrote:
> Пытаюсь работать с сабжем, два вопроса:
> — как изнутри остановить процесс разбора? Например, накопилось некоторое
> количество логических ошибок, парсить дальше смысла нет.
Сам не делал, но если понимаю правильно, то где-то в районе ctxt->instate = XML_PARSER_EOF. Посмотри исходники...
> — как использовать xmlCreateIOParserCtxt? Создать-то я его создал, но
> как потом запустить процесс парсинга? Сейчас написал через
> xmlCreatePushParserCtxt/xmlParseChunk, но это не так красиво
из моего кода:
xmlParserCtxtPtr ctx = xmlCreateFileParserCtxt(pageFile.c_str());// тут и xmlCreateIOParserCtxt юзать можно.
ctx->dictNames = 1;
ctx->sax->startDocument = NULL;
ctx->sax->endDocument = NULL;
ctx->sax->startElementNs = pageDocStartElementNs;
ctx->sax->endElementNs = pageDocEndElementNs;
ctx->sax->comment = NULL;
xmlParseDocument(ctx);
xmlFreeParserCtxt(ctx);
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, ., Вы писали:
Спасибо за ответ, правда, задача потеряла актуальность — перешёл на
Poco (с точки зрения XML — недоделанный клон Xerces, но зато там есть работа с БД и ещё несколько приятных мелочей).
.>Сам не делал, но если понимаю правильно, то где-то в районе ctxt->instate = XML_PARSER_EOF. Посмотри исходники...
мм.. Т.е. в user-data мне надо тащить этот хендл? Ну, вариант, конечно, но с исключениями проще.
.>из моего кода:
.>.>xmlParserCtxtPtr ctx = xmlCreateFileParserCtxt(pageFile.c_str());// тут и xmlCreateIOParserCtxt юзать можно.
ctx->>dictNames = 1;
ctx->>sax->startDocument = NULL;
ctx->>sax->endDocument = NULL;
ctx->>sax->startElementNs = pageDocStartElementNs;
ctx->>sax->endElementNs = pageDocEndElementNs;
ctx->>sax->comment = NULL;
.>xmlParseDocument(ctx);
.>xmlFreeParserCtxt(ctx);
.>
вызов xmlParseDocument? Я думал это только для DOM-а..