Ja es sieht vielleicht so aus, als probier ich nix, aber ich probier so viel herum, dass ich schon garnichtmehr weis, was ich alles probiert und nicht probiert habe. Genau so mit dem Problem1 von eben, was eigentlich funktioniert hatte und ich es garnicht mehr gemerkt habe.
Also danke nochmal für die Geduld. Mein Problem konnte ich nun lösen.
Nurnoch rein aus Interesse und nicht mehr notwendig:
(Falls ich nerve, kann das Thema hier auch geschlossen werden)
Wäre es, falls nötig, denn auch möglich, den "Durchlauf" der XML zu kombinieren? Als Beispiel wieder der Ausgangscode:
Code: Alles auswählen
from lxml import etree as ET
root = ET.fromstring("""<Gesamt zeit = "heute">
<test name = "Test1">
<datensatz ID = "1">
<daten
Vorname="otto"
Nachname = "waldmann"/>
</datensatz>
<datensatz ID = "4">
<daten
Vorname="hans"
Nachname = "stachelmann"/>
<daten
Vorname="hans"
Nachname = "mustermann"/>
</datensatz>
</test>
<test name = "Test2">
</test>
<test name = "Test3">
</test>
</Gesamt> """)
root.xpath('/Gesamt[@zeit="heute"]/test[@name="Test1"]/datensatz[@ID="4"]/daten[@Nachname="mustermann"]')[0].attrib['Vorname'] = 'Manni'
print ET.tostring(root)
Wenn man zum Beispiel möchte, dass man die @zeit konkret angibt, @test konkret angibt, nun aber datensatz nicht konkret (über @ID=4) sondern als Nummer angibt.....also zweiter Datensatz oder so.
Im Gesamten (Pseudo) in der Art:
Code: Alles auswählen
root.xpath('/Gesamt[@zeit="heute"]/test[@name="Test1"]/datensatz[Nr2]/daten[@Nachname="mustermann"]')[0].attrib['Vorname'] = 'Manni'
Wäre das '''datensatz[Nr2]''' irgendwie möglich?
Wie gesagt, ist für mein Problem nicht mehr notwendig, wäre nurnoch Interesse.
Danke an alle.
Gruß