Anzeige:
Ergebnis 1 bis 2 von 2

Thema: [Xerces]XML-Deklaration mit ausgeben

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.01.2006
    Ort
    Kaiserslautern
    Beiträge
    12

    [Xerces]XML-Deklaration mit ausgeben

    Hi!

    Ich bekomme irgendwie nicht heraus wie ich über Xerces eine Ausgabe über einen String mit der XML-Deklaration in der Art:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    bekomme.

    Hier mal ein Codefragment:
    Code:
    DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation( X("LS") );
    
    XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* doc = impl->createDocument();
    
    doc->setEncoding( X("UTF-8") );
    doc->setVersion( X("1.0") );
    
    DOMElement* xml_root_node = doc->createElement( X("ERROR") );
    doc->appendChild( xml_root_node );
    
    // Das XML-Dokument in einen String schreiben
    DOMWriter* writer =	static_cast<DOMImplementationLS*>(impl)->createDOMWriter( );
    // Einen Fehler-Handler registrieren
    DOMErrorHandler* errHandler = (DOMErrorHandler*) new HandlerBase();
    writer->setErrorHandler( errHandler );
    
    const XMLCh* xmlch_xml_doc = writer->writeToString( *xml_root_node );
    const char* str_xml_doc = XMLString::transcode( xmlch_xml_doc );
    XMLString::release( (XMLCh**)&xmlch_xml_doc );
    Vielleicht kennt sich jemand aus? Ich bekomme als Ausgabe nur den String "<ERROR/>".


    Gruß

    Sascha

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.01.2006
    Ort
    Kaiserslautern
    Beiträge
    12

    Problem gelöst

    Ja, auch nicht schlecht! Da antworte ich mir grad selbst.

    Man tausche den unteren Code durch:

    Code:
    	DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation( X("LS") );
    	XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* doc = impl->createDocument();
    
    	DOMElement* xml_root_node = doc->createElement( X("ERROR") );
    	xml_root_node->setTextContent( X(strError) );
    	doc->appendChild( xml_root_node );
    	
    	// Das XML-Dokument in einen String schreiben
    	DOMWriter* writer =	static_cast<DOMImplementationLS*>(impl)->createDOMWriter();
    
    	MemBufFormatTarget  destination;
    	writer->setEncoding(X("ISO-8859-1"));
    	bool retVal = writer->writeNode(&destination, *doc);
    	const XMLByte* iso8859buffer = destination.getRawBuffer();
    Mein Fehler war der, dass ich einen Dokumentenknoten rausgeschrieben habe. Richtig ist es das Dokument zu übergeben, weil dort die Informationen zum Dokument gespeichert sind.

    Danke fürs Lesen!

    Sascha

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •