XML-Element-String in XML-Document einfügen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

Hallo zusammen,

folgende Ausgangslage. Ich hab ein XML-File um die Daten der einzelnen Tabs in einem TabWidget zu speichern. Der Aufbau sieht so aus:

Code: Alles auswählen

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE TABS>
<TABS VERSION="1.0" >
 <scenario activTab="" name="" >
	<tab name="tab1">
		<lObjekt name="lObject1" id="1"></lObjekt>
		<lObjekt name="lObject2" id="2"></lObjekt>
	</tab>
	<tab name="tab2"></tab>
	<tab name="tab3"></tab>
	<tab name="tab4"></tab>
 </scenario>
</TABS>
jetzt generiere ich in jeder TabKlasse einen String der die jeweiligen XML-Elemente zu dem Tab enthält.
Also für den "tab1" würde ein String mit lauter

Code: Alles auswählen

<lObjekt name="lObject1" id="1"></lObjekt>
generiert werden.

Jetzt möchte ich diesen kompletten String an die passenden Stelle in meinem XML-File schreiben.
Das durchlaufen des Files stellt kein Problem dar.
Mit dem Inhalt des Strings will ich ein QDomDocumentFragmen erstellen um es dann einzufügen. Code dazu:

Code: Alles auswählen

        
        xmlFragment = QDomDocument()
        if xmlFragment.setContent(stringMitElementen, False):
            xmlFragment.createDocumentFragment()
Mein Problem ist jetzt das in dem xmlFragment nur EIN Element aus meinem String enthalten ist und ich versteh nicht warum.

Jemand eine Idee ?
BlackJack

In `stringMitElementen` ist auch ein gültiges XML-Fragment, also nicht etwas mehrere Elemente auf der obersten Ebene!?
ichisich
User
Beiträge: 134
Registriert: Freitag 1. Januar 2010, 11:52

gerade selber rausgefunden ...

Doch genau den Fehler hab ich begangen:

Für jeden der hier drüber stolpert:

Das XML-Fragment muss mindestens so aussehen:

Code: Alles auswählen

<ersteEbene>
 <zweiteEbene attr1='23' attr2='42' />
 <zweiteEbene attr1='23' attr2='42' />
 <zweiteEbene attr1='23' attr2='42' />
</ersteEbene>
oder man übergibt die einzelnen Elemente dem XML-Fragment, das tut auch.

Als zweiten Tipp den ich viel früher hätte berücksichtigen sollen ist:

Code: Alles auswählen

ok, fehlerMeldung, zeile, spalte = xmlFragment.setContent(content, False)
Die 4 Rückgaben auswerten die zeigen sehr genau ob und wo es geknallt hat.

Danke !!!
Antworten