+
+namespace {
+ class MyErrorHandler : public DOMErrorHandler {
+ public:
+ unsigned int errors;
+
+ MyErrorHandler() : errors(0) {}
+
+ bool handleError(const DOMError& e)
+ {
+#ifdef _DEBUG
+ xmltooling::NDC ndc("handleError");
+#endif
+ Category& log=Category::getInstance(XMLTOOLING_LOGCAT".ParserPool");
+
+ DOMLocator* locator=e.getLocation();
+ auto_ptr_char temp(e.getMessage());
+
+ switch (e.getSeverity()) {
+ case DOMError::DOM_SEVERITY_WARNING:
+ log.warnStream() << "warning on line " << locator->getLineNumber()
+ << ", column " << locator->getColumnNumber()
+ << ", message: " << temp.get() << logging::eol;
+ return true;
+
+ case DOMError::DOM_SEVERITY_ERROR:
+ ++errors;
+ log.errorStream() << "error on line " << locator->getLineNumber()
+ << ", column " << locator->getColumnNumber()
+ << ", message: " << temp.get() << logging::eol;
+ return true;
+
+ case DOMError::DOM_SEVERITY_FATAL_ERROR:
+ ++errors;
+ log.errorStream() << "fatal error on line " << locator->getLineNumber()
+ << ", column " << locator->getColumnNumber()
+ << ", message: " << temp.get() << logging::eol;
+ return true;
+ }
+
+ ++errors;
+ log.errorStream() << "undefined error type on line " << locator->getLineNumber()
+ << ", column " << locator->getColumnNumber()
+ << ", message: " << temp.get() << logging::eol;
+ return false;
+ }
+ };
+}
+
+