使用XercesDOMParser解析时出现意外异常

时间:2012-04-24 20:34:10

标签: c++ xml xml-parsing xerces-c

我正在使用xerces-c-3.1.1-x86-windows-vc-10.0在Windows 7 Professional SP1上使用MS Developer Studio 10.0.4在C ++中开发代码。我使用以下代码({3}}来打开和关闭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.xmlrootname-00001.xml等。一切正常,直到我到达rootname-03799.xml

parser->parse(xmlsFileName.c_str());

失败,解析器 - >解析(xmlsFileName.c_str());

如果我将其名称更改为rootname-00000.xml我没有任何问题,因此看起来该文件的格式没有问题。此外,我每次都删除解析器和错误处理程序,因此似乎我不应该用完任何东西。

非常感谢对此问题的任何帮助

0 个答案:

没有答案