XML-Verarbeitung in Python: Vollständiger Guide von ElementTree bis lxml

1. Einführung

Python ist eine flexible Programmiersprache, die es einfach macht, verschiedene Datenformate zu handhaben. Insbesondere wird XML (Extensible Markup Language) häufig für den Austausch und die Speicherung strukturierter Daten verwendet und findet breite Anwendung in API-Antworten und Konfigurationsdateien. In Python kann XML mit Standardbibliotheken oder externen Bibliotheken einfach manipuliert werden. In diesem Artikel erklären wir die grundlegenden bis zu fortgeschrittenen Operationen mit XML in Python auf verständliche Weise.

2. Einführung in Bibliotheken zum Umgang mit XML in Python

2.1 Standardbibliothek: xml.etree.ElementTree

Die Standardbibliothek von Python, xml.etree.ElementTree, ist ein nützliches Tool, das das Lesen und Schreiben von XML-Dateien sowie das Erkunden und Bearbeiten der Baumstruktur einfach ermöglicht.
  • Grundlagen des Parsens: import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() print(root.tag) # Ausgabe: "data" In diesem Code wird die XML-Datei data.xml gelesen und das Tag des Root-Elements angezeigt. Sie können überprüfen, dass das Ausgabeergebnis „data“ ist.
  • Fehlerbehandlung, wenn die Datei nicht existiert: Wenn die Datei nicht existiert, wird FileNotFoundError ausgelöst, daher können Sie eine Ausnahmebehandlung wie folgt hinzufügen. try: tree = ET.parse('data.xml') root = tree.getroot() except FileNotFoundError: print("Die Datei wurde nicht gefunden.")

2.2 Externe Bibliothek: lxml

Für fortgeschrittene XML-Operationen wird die lxml-Bibliothek empfohlen. lxml unterstützt leistungsstarke XML-Verarbeitung mit XPath und XSLT und ermöglicht Operationen, die mit der Standardbibliothek schwierig zu realisieren sind, einfach.
  • Erhalten von Elementen mit XPath: from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country[@name="Liechtenstein"]') print(countries[0].tag) # Ausgabe: "country" In diesem Code wird das country-Element abgerufen, dessen name-Attribut „Liechtenstein“ ist.

3. XML-Parsing und -Manipulation

3.1 Grundlegende Parsing-Schritte

Um XML-Dateien zu parsen und die Baumstruktur zu manipulieren, verwenden Sie parse() aus xml.etree.ElementTree. Mit dieser Methode lesen Sie die XML-Datei ein und erhalten das Root-Element des Baums.
  • Parsing aus einer Datei: import xml.etree.ElementTree as ET tree = ET.parse('example.xml') root = tree.getroot() print(root.tag) # Ausgabe: "rootTag" Dieser Code liest die XML-Datei example.xml ein und zeigt den Tag-Namen des Root-Elements an.

3.2 Suche nach Elementen und Bearbeitung von Attributen

Zur Suche nach XML-Elementen verwenden Sie find() oder findall(). Damit können Sie spezifische Elemente oder Attribute einfach abrufen.
  • Suche nach Elementen und Abruf von Attributen: country = root.find('country') print(country.get('name')) # Ausgabe: "Liechtenstein"
  • Bearbeitung von Attributen: Um Attribute von XML-Elementen zu bearbeiten, rufen Sie sie mit get() ab und setzen sie mit set(). country.set('currency', 'CHF') print(country.attrib) # Ausgabe: {'name': 'Liechtenstein', 'currency': 'CHF'}

4. Bearbeitung und Speicherung von XML

4.1 Methode zum Bearbeiten von Elementen

Durch Ändern des Texts oder der Attribute von XML-Elementen können Sie den Inhalt der XML bearbeiten. Zum Beispiel gehen Sie wie folgt vor, um den Text eines Elements zu ändern.
  • Bearbeitung des Elementtexts: rank = root.find('.//rank') rank.text = '2' print(rank.text) # Ausgabe: "2"

4.2 Ausgabe in XML-Datei

Um die geänderte XML in eine Datei zu speichern, verwenden Sie die write()-Methode.
  • Speichern der XML: tree.write('updated_data.xml')
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

5. Anwendungsverarbeitung mit externen Bibliotheken

5.1 Fortgeschrittene XML-Operationen mit lxml

lxml-Bibliothek ermöglicht komplexe Suchen mit XPath oder die Umwandlung von XML in andere Formate mit XSLT.
  • Suche nach Elementen mit XPath: from lxml import etree tree = etree.parse('data.xml') countries = tree.xpath('//country') for country in countries: print(country.get('name'))

5.2 XML-Transformation mit XSLT

Ein Beispiel für die Umwandlung von XML zu HTML mit XSLT wird vorgestellt.
  • Umwandlung von XML zu HTML: from lxml import etree xml_tree = etree.parse('data.xml') xsl_tree = etree.parse('style.xsl') transform = etree.XSLT(xsl_tree) result_tree = transform(xml_tree) result_tree.write('output.html', pretty_print=True)

6. Praxis: Beispielcode und Erläuterung

6.1 Beispiel zum Extrahieren von Daten aus XML

XML-Datei aus Daten extrahieren und spezifische Informationen anzeigen Beispielcode.
  • Beispielcode: import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() for country in root.findall('country'): name = country.get('name') rank = country.find('rank').text print(f"Country: {name}, Rank: {rank}")

6.2 Beispiel zum Bearbeiten und Speichern von XML

XML-Elementwerte bearbeiten und geänderten Inhalt speichern Beispielcode.
  • Beispielcode: import xml.etree.ElementTree as ET tree = ET.parse('data.xml') root = tree.getroot() rank = root.find('.//rank') rank.text = '2' tree.write('updated_data.xml')

7. Zusammenfassung

Beim Umgang mit XML in Python kann durch die Verwendung der Standardbibliothek xml.etree.ElementTree grundlegende XML-Operationen einfach durchgeführt werden. Darüber hinaus ermöglicht lxml fortgeschrittene Operationen wie XPath oder XSLT. Verwenden Sie den im Artikel vorgestellten Code als Referenz und versuchen Sie, XML tatsächlich zu manipulieren.