我有以下代码
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。
有什么想法吗?
答案 0 :(得分:2)
这个bug毕竟是在其他地方。
始终在开头调用XMLPlatformUtils::Initialize()
,最后调用XMLPlatformUtils::Terminate()
。
答案 1 :(得分:1)
您是使用静态库还是简单/普通库进行链接..我在简单/普通库中遇到了同样的问题...使用静态库并在项目seetings中定义宏XERCES_STATIC_LIBRARY并使用多线程调试进行编译(/ MTd)运行时库可以修复你的问题...