Pages

Tuesday, January 18, 2005

Xerces-C++ - Parse a xml buffer from a file

XercesDOMParser *parser;
...
ErrorHandler *errHandler;
...
DOMElement *GetDocRoot(void);
...
DOMDocument *doc;
...

Error_t Parser::ParseFromFile(const char *filename) {
bool errorsOcurred = false;

errHandler = (ErrorHandler *) new HandlerBase;

parser->setErrorHandler(errHandler);
errorsOcurred = false;

try {
parser->parse(filename);
}
catch (const XMLException& e) {
char *errMsg = XMLString::transcode(e.getMessage());
cerr << "[ERROR] XMLException: An error occurred during parsing: " << errMsg << endl;
errorsOcurred = true;
XMLString::release(&errMsg);
}
catch (const DOMException& e) {
char *errMsg = XMLString::transcode(e.msg);
cerr << "[ERROR] DOMException: An error occurred during parsing: " << endl;
errorsOcurred = true;
XMLString::release(&errMsg);
}
catch (...) {
cerr << "[ERROR] UNKNOWN: An error occurred during parsing" << endl;
errorsOcurred = true;
}

if (errorsOcurred) {
return ERROR_PARSER_PARSE;
}


doc = parser->getDocument();

root = doc->getDocumentElement();

return ERROR_NO_ERROR;
}

No comments: