XML Datei Aktualisieren mit QDOM



  • Hallo zusammen,

    ich möchte in einer bestehenden XML Datei ein Element suchen und dort ein child-element hinzufügen.
    Mein Code sieht folgendermaßen aus

    handledom::handledom()
    {
    
    }// <-- handledom::handledom ()
    
    handledom::~handledom(void)
    {
    
    } // <-- ::~ ()
    
    void handledom::writeNewTag(void)
    {
    
    	 QDomDocument doc;
    	 QFile file( "c://test/test3.xml" );
    
    	 if ( true == file.open(QIODevice::ReadWrite))
    	 {
    		 doc.setContent(&file);
    		 QDomElement root = doc.documentElement();
    		 if (root.tagName() == "data")
    		 {
    				QMessageBox msgBox2;
    				msgBox2.setText("soweit so gut");
    				msgBox2.exec();
    		 }
    		 QDomNode n= root.firstChild();
    		 while(!n.isNull())
    		 {
    			 QDomElement e =n.toElement(); //convert node n to element e
    			 if(!e.isNull())
    			 {
    				 if(e.tagName() == "persons")
    				 {
    					 QDomElement newValueTag = doc.createElement(QString("value"));
    					 QDomText newValueText = doc.createTextNode(QString("1234"));
    					 QDomAttr newValueAttr = doc.createAttribute(QString("34ms"));
    					 newValueTag.appendChild(newValueAttr);
    					 newValueTag.appendChild(newValueText);
    					 e.appendChild(newValueTag);
    					 QMessageBox msgBox2;
    					 msgBox2.setText("müsste eigentlich geklappt haben");
    					 msgBox2.exec();
    
    				 }
    			 }
    
    				  n = n.nextSibling();
    		 }
    
    	 }
    	 file.close();
    
    }
    

    Das Programm läuft auch durch die append Befehle durch aber es wird trotzdem nichts in die Datei geschrieben.
    Habt ihr eine Lösung für mich bzw. könnt ihr mir sagen was ich falsch mache?



  • Das setContent ist nur zum Lesen. Am Ende musst du selber doc.toString oder doc.toByteArray aufrufen und das Ergebnis in die Datei speichern.



  • Vielen Dank 🙂


Anmelden zum Antworten