Re: xercesc && setDocumentHandler
От: eneshka  
Дата: 10.10.08 14:11
Оценка:
Ответ нашелся такой (кому-то пригодится): использовать Progressive Parsing:
...
XMLPScanToken token;

//Сначала подготовительные работы и создание структуры для анализа схемы
if (!parser->parseFirst(*memBufIS, token))
{
cerr << "scanFirst() failed\n" << endl;
return 1;
}
//Далее вызываем парсер отдельно на каждую строчку:
bool gotMore = true;
gotMore = parser->parseNext(token);

//Между вызовами как раз и можно менять обработчики, настройки и т.д.
if (((ShemaSAXHandler*)docHandler)->Version() == "1.1")
{
parser->setDocumentHandler(new_docHandler);
}
// parseNext вернет false, когда считает конец корня (ну то есть схема закончится)

while (gotMore)
gotMore = parser->parseNext(token);

parser->parseReset(token);
...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.