2011-05-16 56 views
1

XML文件時,我有以下代碼異常解析使用Xerces的

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 0.1。

任何想法?

+1

什麼是例外?文件中包含什麼內容? – forsvarir 2011-05-16 07:52:43

+0

Xerces Examples.exe中0x0000003a未處理的異常:0xC0000005:訪問衝突讀取位置0x0000003a。這個文件只是我用來學習Xerces的一個主要文件。 – Chrys 2011-05-16 08:11:49

回答

1

該錯誤是在別的地方。

始終在開頭呼叫XMLPlatformUtils::Initialize(),最後呼叫XMLPlatformUtils::Terminate()

1

你使用靜態庫或簡單/普通庫鏈接..我得到了與簡單/普通庫相同的問題...使用靜態庫和定義宏XERCES_STATIC_LIBRARY在項目seetings和編譯使用多線程調試(/ MTD)運行時間庫可以解決您的問題...