Ich habe ein Problem, glaube aber dass es sich lediglich um einen Denkfehler handelt.
Ich habe ein XML Dokument mit mehreren Ebenen. Dieses habe ich mit etree geparsed. Ich muss nun aus diesem Dokument bestimmte Tagnamen, Tagattribute und Taginhalte auslesen und am Ende wieder in ein neues XML-File mit anderer hierarchischer Struktur schreiben.
Das heißt: Ich benötige einen Tagnamen von Ebene 4 aus dem Ausgangsdokument, muss ihn aber im zu erzeugenden Dokument auf der 2. Ebene verwenden.
Bisheriges Vorgehen bei der Erschließung
Code: Alles auswählen
for Node in root:
if Node.tag =="Name":
Name = Node.text
if Node.tag =="Adresse":
Adresse = Node.text
for SubNode_level_1 in Node:
if SubNode.get("Phone") == "Tel":
Telefonnummer = SubeNode.get("Phone")
for SubNode_level_2 in SubNode_level_1:
Stadt = SubNode_level_2.text
All diese Daten (Name, Adresse, Telefonnummer, Stadt_HH) sollen nun in ein neues XML-File geschrieben werden.
Es existieren also pro Ebene mehrere Geschwisterknoten, die alle in das neue XML-File geschrieben werden sollen, nur eben manchmal nicht auf der gleichen Ebene
Mache ich nun also:
Code: Alles auswählen
for Node in root:
if Node.tag =="Name":
Name = Node.text
if Node.tag =="Adresse":
Adresse = Node.text
for SubNode_level_1 in Node:
if SubNode.get("Phone") == "Tel":
Telefonnummer = SubeNode.get("Phone")
for SubNode_level_2 in SubNode_level_1:
Stadt = SubNode_level_2.text
out.write('<ab:name>' + Name + '</ab:name>')
out.write('<ab:Stadt>' + Stadt + '</Stadt>')
out.write('<ab:street-address>' + Adresse + '</ab:street-address>\n')
out.write('<ab:Fon>' + Telefonnummer + '</Fon>')
In der neuen XML-Datei sollen aber Name, Adresse Stadt nur ein einziges Mal auftauchen, die Telefonnummer kann und soll öfter auftreten, da davon mehrere existieren
Mache ich nun das:
Code: Alles auswählen
for Node in root:
if Node.tag =="Name":
Name = Node.text
if Node.tag =="Adresse":
Adresse = Node.text
for SubNode_level_1 in Node:
if SubNode.get("Phone") == "Tel":
Telefonnummer = SubeNode.get("Phone")
for SubNode_level_2 in SubNode_level_1:
Stadt = SubNode_level_2.text
out.write('<ab:name>' + Name + '</ab:name>')
out.write('<ab:Stadt>' + Stadt + '</ab:Stadt>')
out.write('<ab:street-address>' + Adresse + '</ab:street-address>\n')
out.write('<ab:Fon>' + Telefonnummer + '</ab:Fon>')
Die Reihenfolge der Elemente in der zu erzeugenden Datei ist vorgeschrieben, d.h. Name-->Stadt-->street-adress-->Fon
Wo liegt mein gedanklicher Fehler?
Viele Grüße