使用Xerces解析xml文件时出现异常

时间:2011-05-16 07:47:50

标签: visual-c++ xerces

我有以下代码

    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 个答案:

答案 0 :(得分:2)

这个bug毕竟是在其他地方。

始终在开头调用XMLPlatformUtils::Initialize(),最后调用XMLPlatformUtils::Terminate()

答案 1 :(得分:1)

您是使用静态库还是简单/普通库进行链接..我在简单/普通库中遇到了同样的问题...使用静态库并在项目seetings中定义宏XERCES_STATIC_LIBRARY并使用多线程调试进行编译(/ MTd)运行时库可以修复你的问题...