On Tue, May 27, 2008 at 8:52 PM, Roberto Rigamonti <[EMAIL PROTECTED]> wrote:
> Hi, I had the same problem and I solved it in this way:
> <snip code>
Awesome !
Thanks for your help.
This is what I ended up with, the code you provided had a few memory
leaks, but it helped out a whole bunch ! Thank you so much !
xmldomerrorreporter.hpp:
-- code starts --
#ifndef __XMLDOMERRORREPORTER__
#define __XMLDOMERRORREPORTER__
#include <xercesc/sax/ErrorHandler.hpp>
#include <xercesc/sax/SAXParseException.hpp>
#include <iostream>
class XMLDOMErrorReporter : public xercesc::ErrorHandler
{
private:
bool sawErrors;
public:
inline XMLDOMErrorReporter () : sawErrors (false) { }
inline ~XMLDOMErrorReporter () { }
void warning (const xercesc::SAXParseException & e);
void error (const xercesc::SAXParseException & e);
void fatalError (const xercesc::SAXParseException & e);
inline void resetErrors () { sawErrors = false; }
inline bool getSawErrors () const { return sawErrors; }
};
#endif
-- code ends --
xmldomerrorreporter.cpp
-- code starts --
#include "xmldomerrorreporter.hpp"
void XMLDOMErrorReporter::warning (const xercesc::SAXParseException & e)
{
char * tmp;
std::cerr << "-- WARNING [DOM Parser] --" << std::endl;
tmp = xercesc::XMLString::transcode (e.getMessage ());
std::cerr << "Message: " << tmp << std::endl;
xercesc::XMLString::release (&tmp);
tmp = xercesc::XMLString::transcode (e.getSystemId ());
std::cerr << "File: " << tmp << std::endl;
xercesc::XMLString::release (&tmp);
std::cerr << "Line: " << e.getLineNumber () << std::endl;
std::cerr << "Column: " << e.getColumnNumber () << std::endl;
}
void XMLDOMErrorReporter::error (const xercesc::SAXParseException & e)
{
sawErrors = true;
char * tmp;
std::cerr << "-- ERROR [DOM Parser] --" << std::endl;
tmp = xercesc::XMLString::transcode (e.getMessage ());
std::cerr << "Message: " << tmp << std::endl;
xercesc::XMLString::release (&tmp);
tmp = xercesc::XMLString::transcode (e.getSystemId ());
std::cerr << "File: " << tmp << std::endl;
xercesc::XMLString::release (&tmp);
std::cerr << "Line: " << e.getLineNumber () << std::endl;
std::cerr << "Column: " << e.getColumnNumber () << std::endl;
}
void XMLDOMErrorReporter::fatalError (const xercesc::SAXParseException & e)
{
sawErrors = true;
char * tmp;
std::cerr << "-- FATAL ERROR [DOM Parser] --" << std::endl;
tmp = xercesc::XMLString::transcode (e.getMessage ());
std::cerr << "Message: " << tmp << std::endl;
xercesc::XMLString::release (&tmp);
tmp = xercesc::XMLString::transcode (e.getSystemId ());
std::cerr << "File: " << tmp << std::endl;
xercesc::XMLString::release (&tmp);
std::cerr << "Line: " << e.getLineNumber () << std::endl;
std::cerr << "Column: " << e.getColumnNumber () << std::endl;
}
-- code ends --
Best regards,
S.
--
question = ( to ) ? be : ! be;
-- Wm. Shakespeare