1

Windows 7 Professional SP1 で MS Developer Studio 10.0.4 を使用して、xerces-c-3.1.1-x86-windows-vc-10.0 を使用して 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ても問題ないので、ファイルの形式に問題はないようです。また、パーサーとエラー ハンドラーを毎回削除するので、不足することはないようです。

この問題に関するご支援をいただければ幸いです

4

0 に答える 0