我正在使用 xerces-c-3.1.1-x86-windows-vc-10.0 在 Windows 7 Professional SP1 上使用 MS Developer Studio 10.0.4 在 C++ 中开发代码。我使用以下代码从这里打开和关闭 XML 文件。
try
{
XMLPlatformUtils::Initialize();
}
catch (const XMLException& toCatch)
{
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Error during initialization! :\n"
<< message << "\n";
XMLString::release(&message);
return ERROR_PARAMETERS;
}
// Determine xml file name
xmlsFileName.assign(fileName);
XercesDOMParser* parser = new XercesDOMParser();
parser->setValidationScheme(XercesDOMParser::Val_Always);
parser->setDoNamespaces(true);
ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
parser->setErrorHandler(errHandler);
try
{
parser->parse(xmlsFileName.c_str());
}
catch (const XMLException& toCatch)
{
char* message = XMLString::transcode(toCatch.getMessage());
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
return ERROR_PARAMETERS;
}
catch (const DOMException& toCatch)
{
char* message = XMLString::transcode(toCatch.msg);
cout << "Exception message is: \n"
<< message << "\n";
XMLString::release(&message);
return ERROR_PARAMETERS;
}
catch (...)
{
cout << "Unexpected Exception \n" ;
return ERROR_PARAMETERS;
}
// Some more code
delete parser;
delete errHandler;
输入的 XML 文件具有命名序列rootname-00000.xml
,rootname-00001.xml
等。一切正常,直到我到达rootname-03799.xml
那一点
parser->parse(xmlsFileName.c_str());
parser->parse(xmlsFileName.c_str()) 失败;
如果我将其名称更改为rootname-00000.xml
我没有问题,那么文件格式似乎没有问题。另外,我每次都删除解析器和错误处理程序,所以看起来我不应该用完任何东西。
任何有关此问题的帮助将不胜感激