Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
xerces_dom [2008/04/14 20:14] kmioduszewski |
xerces_dom [2008/04/14 20:32] kmioduszewski |
||
---|---|---|---|
Linia 67: | Linia 67: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | |||
Linia 86: | Linia 88: | ||
} | } | ||
catch( const xercesc::XMLException& e ){ | catch( const xercesc::XMLException& e ){ | ||
- | //... | + | //... |
- | + | ||
- | if(parser->getErrorCount()==0) { | + | |
- | xercesc::DOMDocument* XMLdoc = parser->getDocument(); | + | |
- | //... | + | |
- | } | + | |
} | } | ||
catch( const xercesc::DOMException& e ){ | catch( const xercesc::DOMException& e ){ | ||
Linia 100: | Linia 97: | ||
} | } | ||
+ | if(parser->getErrorCount()==0) { | ||
+ | xercesc::DOMDocument* XMLdoc = parser->getDocument(); | ||
+ | //... | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | |||
+ | Dobrym pomysłem jest zastosowanie własnego ''ErrorHandler'' do wykrywania błędów składniowych w trakcie parsowania i wyświetlania o nich informacji (typ, miejsce wystąpienia). Najprostszy to zaimplementować metody z interfejsu ''HandlerBase'': | ||
+ | <code cpp> | ||
+ | #include <xercesc/sax/HandlerBase.hpp> | ||
+ | |||
+ | class myErrorHandler : xercesc::HandlerBase { | ||
+ | void warning( const xercesc::SAXParseException& e ) { | ||
+ | char *msg = xercesc::XMLString::transcode(e.getMessage()); | ||
+ | std::cout << "warning: " << msg | ||
+ | << " | line: " << e.getLineNumber() << std::endl; | ||
+ | xercesc::XMLString::release(&msg); | ||
+ | } | ||
+ | void error( const xercesc::SAXParseException& e ) { | ||
+ | cout << "error: " << xercesc::XMLString::transcode(e.getMessage()) | ||
+ | << " | line: " << e.getLineNumber() << endl; | ||
+ | } | ||
+ | void fatalError( const xercesc::SAXParseException& e ) { | ||
+ | cout << "fatalError: " << xercesc::XMLString::transcode(e.getMessage()) | ||
+ | << " | line: " <<e.getLineNumber() << endl; | ||
+ | } | ||
+ | void resetErrors() {} | ||
+ | }; | ||
</code> | </code> |