Исключение при разборе XML-файла с использованием Xerces - PullRequest
1 голос
/ 16 мая 2011

У меня следующий код

    XercesDOMParser *parser = new XercesDOMParser();
    parser->setExternalNoNamespaceSchemaLocation("personal.xsd");
    parser->setExitOnFirstFatalError(true);
    parser->setValidationConstraintFatal(true);
    parser->setValidationScheme(XercesDOMParser::Val_Auto);
    parser->setDoNamespaces(false);
    parser->setDoSchema(true);
    ErrorHandler* errHandler = (ErrorHandler*) new Error_handler();
    parser->setErrorHandler(errHandler);

    try
    {
        const char *const xmlFile = "personal.xml";
        parser->parse(xmlFile);
    }
    catch (const XMLException& toCatch) 
    {
        char* message = XMLString::transcode(toCatch.getMessage());
        cout << "Exception message is: \n"
            << message << "\n";
        XMLString::release(&message);           
    }
    catch (const DOMException& toCatch) 
    {
        char* message = XMLString::transcode(toCatch.msg);
        cout << "Exception message is: \n"
            << message << "\n";
        XMLString::release(&message);           
    }
    catch (...) {
        cout << "Unexpected Exception \n" ;           
    }

Я получаю исключение в следующей строке:

parser->parse(xmlFile);

Windows Xp, visual studio 2008, xerces-c-3.1.1.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Ошибка была где-то еще.

Всегда звоните XMLPlatformUtils::Initialize() в начале и XMLPlatformUtils::Terminate() в конце

1 голос
/ 30 июня 2011

вы связываете, используя статическую библиотеку или простую / обычную библиотеку ... У меня такая же проблема с простой / обычной библиотекой ... Использование статической библиотеки и определение макроса XERCES_STATIC_LIBRARY в настройках проекта и компиляция с использованием многопоточной отладки (/ MTd) библиотека времени выполнения может решить вашу проблему ...

...