XML-File modifizieren
Verfasst: Sonntag 11. Mai 2014, 20:18
Hallo miteinander,
ich würde gerne ein existierendes XML-File einlesen und gewisse Inhalte verändern.
Konkret habe ich zurzeit ein XML-File gegeben, das folgende Struktur hat:
Falls der Beruf schon da ist, aber noch nicht in positions, soll einfach die Position hinzugefügt werden.
Falls alles schon da ist, muss nichts verändert werden.
Den Beruf und die Position extrahiere ich aus einem anderen File - wir können also annehmen, dass diese Angaben vorhanden sind.
Bis jetzt habe ich es mit minidom probiert:
Mit dem Code oben bin ich zwar dann bei der richtigen Person - wie aber kann ich dann noch prüfen, ob der Beruf vorhanden ist, bzw. ihn und die Position hinzufügen?
Danke für jeden Hinweis.
ich würde gerne ein existierendes XML-File einlesen und gewisse Inhalte verändern.
Konkret habe ich zurzeit ein XML-File gegeben, das folgende Struktur hat:
Nun möchte ich überprüfen, ob Frau Müller bereits den Beruf "Lehrerin" hat. Falls nein, soll der Beruf und die Position, an der der Beruf gefunden wurde, hinzugefügt werden.<ner><persons><person id="1">
<address>Fr.</address>
<titles/>
<firstname>Mary</firstname>
<lastname>Müller</lastname>
<gender>F</gender>
<profession/>
<references>
<reference>
<positions>
<position>68-590-1</position>
<position>68-590-2</position>
</positions>
<positions>
<position>68-590-6</position>
<position>68-590-7</position>
</positions>
</reference>
</references>
</person>
</persons>
</ner>
Falls der Beruf schon da ist, aber noch nicht in positions, soll einfach die Position hinzugefügt werden.
Falls alles schon da ist, muss nichts verändert werden.
Den Beruf und die Position extrahiere ich aus einem anderen File - wir können also annehmen, dass diese Angaben vorhanden sind.
Bis jetzt habe ich es mit minidom probiert:
Code: Alles auswählen
from xml.dom import minidom
doc = minidom.parse('SAC-Jahrbuch_1895_mul-ner.xml')
person = doc.getElementsByTagName('person')
lastnames = doc.getElementsByTagName('lastname')
positions = doc.getElementsByTagName('position')
professions = doc.getElementsByTagName('profession')
for ln in lastnames:
for pos in positions:
if ln.firstChild.nodeValue == u"Müller" and pos.firstChild.nodeValue == "68-590-2":
print "right person"
Danke für jeden Hinweis.