Knoten aus XML-Dateien entfernen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

Beitragvon BlackJack » Donnerstag 10. Juli 2008, 12:27

Warum die bemängelte Zeile *nie* funktioniert, hat ProgChild in seinem letzten Beitrag erklärt. Ein Knoten kann nicht sein eigenes Kind sein.

Ich weiss auch nicht, ob Du bei DOM und SAX so besonders viel Hilfe hier bekommen wirst. Das benutzt eigentlich keiner, der nicht gerade masochistisch veranlagt ist. ;-)

Mit `ElementTree` könnte das so aussehen:

Code: Alles auswählen

from xml.etree import ElementTree as etree

def main():
    new_contents = [u'Gemüse', 'rrr']
   
    doc = etree.parse('test.xml')
    value_nodes = doc.findall('Variables/Tag/Value')
    assert len(new_contents) == len(value_nodes)
    for value_node, new_content in zip(value_nodes, new_contents):
        value_node.text = new_content
   
    etree.dump(doc)
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

Beitragvon Pü-Ton » Donnerstag 10. Juli 2008, 15:37

Hi BlackJack,

wow, das ist ja der Hammer, klappt super. Werd es dann wohl mit Elementtree machen...

Vielen Dank :D :D :D :D
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

Beitragvon Pü-Ton » Donnerstag 17. Juli 2008, 14:24

Hi BlackJack,

ich beziehe mich nochmal auf Dein Beispiel von eben.
Wenn ich das so mache, bekomm ich ja wunderschön das gesamte XML-File in meiner Ausgabe von Scite angezeigt.
Aber das ist jetzt nur eine "Vorschau", oder?
Das bestehende, ausgelesene/geparste XML wurde damit ja nicht übrschrieben, oder?
Aber genau das will ich noch machen...

"echtes" XML-File löschen und mit dem bearbeiteten überschrieben.

Kannst Du mir da auf die Sprünge helfen?


Code: Alles auswählen

etree.dump(doc)

bewirkt doch die Anzeige, oder?

Muss überhaupt gelöscht werden, oder kann man mit elementtree auch einfach überschreiben und speichern?

Danke schonmal
BlackJack

Beitragvon BlackJack » Donnerstag 17. Juli 2008, 14:30

`ElementTree`-Exemplare haben eine `write()`-Methode.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]