Segfault in Xercesparser beim laden einer Zeichenkette



  • Wollte erstmal alle Begrüßen, denn das ist meine erster Thread in diesem Forum. 🙂

    Zu meinem Problem:

    Ich versuche eine Zeichenkette:
    z.b.:

    char* p = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><FUNCTION NAME=\"GET_MEASURESTATUS\" ID=\"1149758883\" KENNUNG=\"dd1\" PWD=\"dd1\"/>";
    

    über die auch in diesem Forum oft besprochene Methode:

    XercesDOMParser* parser = new XercesDOMParser();
    static const char* MemBufId = "MemoryBufInputSource";
    std::auto_ptr<MemBufInputSource> memBufIs(new MemBufInputSource(( const XMLByte* )p, strlen( p ), MemBufId, false));
    parser->parse(*memBufIs);
    

    in einen DOMTree zu laden.
    Das ganze kompiliert auch vollständig, nur leider bekomme ich immer einen
    Segmentationfault wenn ich die Zeichenkette von meinem parser parsen lassen
    will.

    hier nochmal der komplette code:

    #include <xercesc/framework/MemBufInputSource.hpp>
    #include <xercesc/framework/Wrapper4InputSource.hpp>
    #include <xercesc/util/PlatformUtils.hpp>
    //#include <xercesc/parsers/AbstractDOMParser.hpp>
    #include <xercesc/parsers/XercesDOMParser.hpp>
    #include <xercesc/dom/DOMImplementation.hpp>
    #include <xercesc/dom/DOMImplementationLS.hpp>
    #include <xercesc/dom/DOMImplementationRegistry.hpp>
    #include <xercesc/dom/DOMBuilder.hpp>
    #include <xercesc/dom/DOMException.hpp>
    #include <xercesc/dom/DOMDocument.hpp>
    #include <xercesc/dom/DOMNodeList.hpp>
    #include <xercesc/dom/DOMError.hpp>
    #include <xercesc/dom/DOMLocator.hpp>
    #include <xercesc/dom/DOMNamedNodeMap.hpp>
    #include <xercesc/dom/DOMAttr.hpp>
    
    //... hier kommen jetzt noch ne menge Klassen usw. ...
    
    void Viewer::verarbeiteDatei(){
    try{
        XMLPlatformUtils::Initialize();
    } catch( XMLException& e ){
        std::cout << "Error while initializing xercesplatform" << std::endl;
    }
        DOMDocument* xmlDoc = 0;
    try{
        char* p = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><FUNCTION NAME=\"GET_MEASURESTATUS\" ID=\"1149758883\" KENNUNG=\"dd1\" PWD=\"dd1\"/>";
        XercesDOMParser* parser = new XercesDOMParser();
        static const char* MemBufId = "MemoryBufInputSource";
        std::auto_ptr<MemBufInputSource> memBufIs(new MemBufInputSource(( const XMLByte* )p, strlen( p ), MemBufId, false));
        parser->parse(*memBufIs); // an dieser Stelle entsteht der Segfault...
    } catch(const XMLException&){
        XERCES_STD_QUALIFIER cerr << "\nError during parsing memory config\n"
                 		<< "Exception message is:  \n"<< XERCES_STD_QUALIFIER endl;
    } catch (...) {
        XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing memory\n";
    }
    
    //... Sachen die ich mit dem DOMTree machen möchte ...
    
    try{
        XMLPlatformUtils::Terminate();
    }catch( XMLException& e ){
        std::cout << "Error while terminating xercesplatform" << std::endl;
    }
    

    Danke schonmal für jede Hilfe, ich sitz jetzt schon eine ganze Weile vor diesem
    Problem und komm nicht wirklich weiter. Bin also für den kleinsten Hinweis sehr dankbar. 🙂

    gambi



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten