Error Handler in DOMParser setzen



  • Hallo zusammen,
    folgendes Problem raubt mir den Schlaf:
    Bem: Ich benutze Xerces - C++

    Ich habe mir einen kleinen DOMErrorHandler geschrieben

    #include <xercesc/dom/DOMErrorHandler.hpp>
    #include <xercesc/util/XMLString.hpp>
    #include <iostream>

    using namespace std;

    XERCES_CPP_NAMESPACE_USE

    class MyErrorHandler : public DOMErrorHandler
    {
    public:

    MyErrorHandler()
    {
    hasErrors = false;
    }

    ~MyErrorHandler()
    {}

    bool handleError(const DOMError& domError)
    {
    hasErrors = true;
    if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
    cerr << "\nWarning at file ";
    else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
    cerr << "\nError at file ";
    else
    cerr << "\nFatal Error at file ";

    cerr << XMLString::transcode(domError.getLocation()->getURI())
    << ", line " << domError.getLocation()->getLineNumber()
    << ", char " << domError.getLocation()->getColumnNumber()
    << "\n Message: " << XMLString::transcode(domError.getMessage()) << endl;

    return true;
    }

    bool getHasErrors()
    {
    return hasErrors;
    }

    private:

    bool hasErrors;

    };

    Den ich wie folgt im Programm initialisiere:

    MyErrorHandler ha;

    dann versuche ich etwas wie:

    parser->setErrorHandler(ha);

    aber egal wie ich es versuche, kommt immer folgende Fehlermessage:

    C:\C++\Test_Files\XML_XSD_Validator\XML_XSD_Validator.cpp(65) : error C2664: 'setErrorHandler' : Konvertierung des Parameters 1 von 'class MyErrorHandler' in 'class xercesc_2_5::ErrorHandler *const ' nicht moeglich
    Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
    Fehler beim Ausführen von cl.exe.

    Ich hab schon (fast) alles versucht. Wenn mir jemand sagen könnte, wie ich meinen ErrorHandler an diesen .... parser kriege, wäre ich sowas von dankbar!

    Vielen Dank
    da Bub



  • Hab den Fehler selber entdeckt:
    Der DOMParser unterstützt nur ErrorHandler, ich hatte aber DOMErrorHandler. Die Lösung war schließlich MyErrorHandler von ErrorHandler umzustellen und die DOMExceptions auf SAX usw. Aber jetzt gehts.
    Danke an diejenigen, die grad am Überlegen waren 🙂


Anmelden zum Antworten