Ich beschäftige mich seit 2 Tagen mit XML. Da meine XML-Dateien recht groß sind hab ich zu cElementTree gegriffen was auch schon ganz gut klappt.
1.Nun frag ich mich ob es nicht eine einfachere Lösung gibt als immer mit getchildren an das gewünschte Element zu kommen
2. arbeitet die XML-Datei mit Name-Space. Wie kann ich es umgehen, dass ich bei find nicht immer {http://auto.com} mit angeben muss? Oder muss er bei der Suche immer dabei sein, gerade damit man gleichnamige Elemente auseinander halten kann?
Alles in allem suche ich einfach eine schönere Lösung möchte aber bei cElementTree bzw minidom bleiben.
PS: Auf das XML-File hab ich leider kein Einfluss.
Danke für Vorschläge und Kritik
Hier der Anfang meines XML-Files:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Exported from ToolSuite -->
- <AUTOxsi:schemaLocation="http://auto.com auto.xsd"
xmlns="http://auto.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <TOP-LEVEL>
- <PACKAGE>
<SHORT-NAME>David</SHORT-NAME>
- <ELEMENTS>
- <EC>
<SHORT-NAME>An</SHORT-NAME>
</ECU>
- <EC>
<SHORT-NAME>BA</SHORT-NAME>
</EC>
- <EC>
<SHORT-NAME>BC</SHORT-NAME>
</EC>
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
from xml.etree import cElementTree
auto = cElementTree.parse("File.xml").getroot()
top_level = auto.getchildren()[0]
package = top_level.getchildren()
elements = package[0].getchildren()[1]
ec = elements.findall("{http://auto.com}EC")
for i in ec:
print i.find("{http://auto.com}SHORT-NAME").text
Code: Alles auswählen
An
BA
BC