【问题标题】:Exception when parsing xml file using Xerces使用 Xerces 解析 xml 文件时出现异常
【发布时间】:2011-05-16 07:47:50
【问题描述】:

我有以下代码

    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。

有什么想法吗?

【问题讨论】:

  • 有什么例外?文件里有什么?
  • Xerces Examples.exe 中 0x0000003a 处未处理的异常:0xC0000005:访问冲突读取位置 0x0000003a。该文件只是我用来学习 Xerces 的主要文件。

标签: visual-c++ xerces


【解决方案1】:

这个错误毕竟在其他地方。

总是在开头调用XMLPlatformUtils::Initialize(),最后调用XMLPlatformUtils::Terminate()。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多