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

Reply via email to