ich möchte eine XML-Datei verändern. Das bestehende XML-File sieht so aus:
Code: Alles auswählen
<?xml version="1.0" encoding="ISO-8859-1"?>
<repositoryTree version="0.5">
<printName>Haustier</printName>
<version>2007-02-06</version>
<repositoryFolder>
<printName>Katze</printName>
<repositoryFolder>
<printName>Große Katze</printName>
<repositoryFolder>
<printName>Name</printName>
<repositoryItem name="Sisi" printName="Sisi"/>
<repositoryItem name="Muschi" printName="Muschi"/>
</repositoryFolder>
</repositoryFolder>
</repositoryFolder>
<repositoryFolder>
<printName>Hund</printName>
<repositoryFolder>
<printName>Dackel</printName>
<repositoryItem name="Lutz" printName="Lutz"/>
<repositoryItem name="Bruno" printName="Bruno"/>
</repositoryFolder>
<repositoryFolder>
<printName>Schäferhund</printName>
<repositoryItem name="Heinz" printName="Heinz"/>
</repositoryFolder>
</repositoryFolder>
</repositoryTree>
Das XML-File sieht dann so aus:
Code: Alles auswählen
<?xml version="1.0" encoding="ISO-8859-1"?>
<repositoryTree version="0.5">
<printName>Haustier</printName>
<version>2007-02-06</version>
<repositoryFolder>
<printName>Katze</printName>
<repositoryFolder>
<printName>Große Katze</printName>
<repositoryFolder>
<printName>Name</printName>
<repositoryItem name="Sisi" printName="Sisi"/>
<repositoryItem name="Muschi" printName="Muschi"/>
</repositoryFolder>
</repositoryFolder>
</repositoryFolder>
<repositoryFolder>
<printName>Dackel</printName>
<repositoryItem name="Lutz" printName="Lutz"/>
<repositoryItem name="Bruno" printName="Bruno"/>
</repositoryFolder>
<repositoryFolder>
<printName>Schäferhund</printName>
<repositoryItem name="Heinz" printName="Heinz"/>
</repositoryFolder>
</repositoryTree>
Um das zu realisieren, benutzte ich die Bibliothek „elementtree.ElementTree“. Nun schaffe ich es zwar, die einzelnen Knoten zu durchlaufen. Aber was ich nicht hinbekomme, ist den Knoten Hund durch die entsprechenden Kindknoten zu ersetzten.
Aber ich glaube, mein Code ist auch nicht ganz richtig.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import sys
import elementtree.ElementTree as etree
def walk_tree(node):
print 'node text', node.text
if node.text == 'Hund':
node.remove(node.items())
#pass
print 'Element --->', node.tag
for (name, value) in node.attrib.items():
print 'Attrib --> Name: %s Value: %s \n\n' % (name, value)
children = node.getchildren()
for child in children:
walk_tree(child)
def check(inFileName):
doc = etree.parse(inFileName)
root = doc.getroot()
walk_tree(root)
def main():
args = sys.argv[1:]
if len(args) != 1:
print 'usage infile.xml'
sys.exit(-1)
check(args[0])
if __name__ == '__main__':
main()
Danke schon mal im Voraus!!
Albert