Python XML-Datei – Lesen, Schreiben und Analysieren

⚡ Intelligente Zusammenfassung

Python Die XML-Verarbeitung ermöglicht das Lesen, Schreiben und Parsen von XML-Dokumenten mithilfe der integrierten Module minidom und ElementTree. Die Klasse minidom lädt eine Datei als DOM in den Speicher, während ElementTree eine schnellere und effizientere Methode bietet. Pythonic tree API.

  • 🔘 Was ist XML? Die Extensible Markup Language (EXL) speichert und transportiert kleine, strukturierte Daten.
  • ☑️ minidom-Parsing: Die Funktion parse() lädt eine XML-Datei als DOM in den Speicher.
  • Lesetags: getElementsByTagName() gibt übereinstimmende Elemente zurück; getAttribute() liest deren Werte.
  • 🧪 Schreibknoten: Die Methoden `createElement()` und `appendChild()` fügen einem Dokument ein neues Tag hinzu.
  • ElementTree-API: ET.parse() erstellt einen Baum; getroot() gibt das Wurzelelement zurück.
  • 🤖 KI-fähig: Geparstes XML speist Konfigurationen und API-Daten in Machine-Learning-Pipelines ein.

Python XML-Datei

Die folgenden Abschnitte behandeln das Parsen, Schreiben und Lesen von XML-Dateien in Python.

Was ist XML?

XML steht für eXtensible Markup Language. Es wurde für die Speicherung und den Transport kleiner bis mittlerer Datenmengen entwickelt und wird häufig zum Austausch strukturierter Informationen verwendet.

Python Ermöglicht das Parsen und Bearbeiten von XML-Dokumenten. Um ein XML-Dokument zu parsen, muss das gesamte Dokument im Speicher vorliegen. In diesem Tutorial zeigen wir, wie die XML-Minidom-Klasse verwendet werden kann. Python um XML-Dateien zu laden und zu analysieren.

So analysieren Sie XML mit Minidom

Wir haben eine Beispiel-XML-Datei erstellt, die wir analysieren werden.

Schritt 1) ​​Erstellen Sie eine Beispiel-XML-Datei

In der Datei sehen wir den Vornamen, Nachnamen, Wohnort und das Fachgebiet (SQL, Python, Testen und Geschäft).

So analysieren Sie XML mit Minidom

Schritt 2) Verwenden Sie die Parse-Funktion, um die XML-Datei zu laden und zu analysieren

Nachdem wir das Dokument analysiert haben, geben wir den „Knotennamen“ des Wurzelknotens und den „Tagnamen des ersten Kindknotens“ aus. Tagname und Knotenname sind Standardeigenschaften der XML-Datei.

Analysieren Sie XML mit Minidom

  • Importieren Sie das Modul xml.dom.minidom und deklarieren Sie die zu parsende Datei (myxml.xml).
  • Diese Datei enthält einige grundlegende Informationen über einen Mitarbeiter wie Vorname, Nachname, Wohnort, Fachwissen usw.
  • Wir verwenden die Parse-Funktion auf dem XML-Minidom, um die XML-Datei zu laden und zu analysieren
  • Wir haben eine Variable doc, und doc erhält das Ergebnis der Parse-Funktion.
  • Wir möchten den Knotennamen und den Namen des untergeordneten Tags aus der Datei ausgeben, daher deklarieren wir dies in der print-Funktion.
  • Führen Sie den Code aus. Er gibt den Knotennamen (#document) aus der XML-Datei und den ersten untergeordneten Tagnamen (Mitarbeiter) aus der XML-Datei aus

HinweisNodename und child tagname sind die Standardnamen bzw. Eigenschaften eines XML-DOMs.

Schritt 3) Rufen Sie die Liste der XML-Tags aus dem XML-Dokument auf und geben Sie sie aus.

Als Nächstes können wir die Liste der XML-Tags aus dem XML-Dokument abrufen und ausgeben. Hier haben wir die Liste der Fähigkeiten wie SQL ausgegeben. Python, Tests und Geschäft.

Analysieren Sie XML mit Minidom

  • Deklarieren Sie die Variable Expertise, aus der wir extracalle Expertennamen, die der Mitarbeiter hat
  • Verwenden Sie die Dom-Standardfunktion namens „getElementsByTagName“.
  • Dadurch werden alle Elemente mit dem Namen „skill“ abgerufen
  • Deklariere eine Schleife über jedes einzelne der Skill-Tags.
  • Führen Sie den Code aus – er liefert eine Liste mit vier Fähigkeiten.

So schreiben Sie einen XML-Knoten

Mit der Funktion „createElement“ können wir ein neues Attribut erstellen und dieses neue Attribut oder Tag dann an die vorhandenen XML-Tags anhängen. Wir haben unserer XML-Datei ein neues Tag „BigData“ hinzugefügt.

  1. Sie müssen Code schreiben, um das neue Attribut (BigData) zum bestehenden XML-Tag hinzuzufügen.
  2. Anschließend müssen Sie das XML-Tag mit dem angehängten neuen Attribut ausdrucken.

XML-Knoten schreiben

  • Um ein neues XML-Tag hinzuzufügen und es dem Dokument einzufügen, verwenden wir den Code „doc.createElement“.
  • Dieser Code erstellt ein neues Skill-Tag für unser neues Attribut „BigData“.
  • Fügen Sie dieses Kompetenz-Tag dem ersten untergeordneten Element (Mitarbeiter) des Dokuments hinzu.
  • Führen Sie den Code aus – das neue Tag „BigData“ erscheint dann in der Liste der Fachgebiete.

Beispiel für einen XML-Parser

Python 2 Beispiel

import xml.dom.minidom

def main():
# use the parse() function to load and parse an XML file
   doc = xml.dom.minidom.parse("Myxml.xml");
  
# print out the document node and the name of the first child tag
   print doc.nodeName
   print doc.firstChild.tagName
  
# get a list of XML tags from the document and print each one
   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
#Write a new XML tag and add it into the document
   newexpertise = doc.createElement("expertise")
   newexpertise.setAttribute("name", "BigData")
   doc.firstChild.appendChild(newexpertise)
   print " "

   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
if name == "__main__":
  main();

Python 3 Beispiel

import xml.dom.minidom

def main():
    # use the parse() function to load and parse an XML file
    doc = xml.dom.minidom.parse("Myxml.xml");

    # print out the document node and the name of the first child tag
    print (doc.nodeName)
    print (doc.firstChild.tagName)
    # get a list of XML tags from the document and print each one
    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

    # Write a new XML tag and add it into the document
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print (" ")

    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

if __name__ == "__main__":
    main();

So analysieren Sie XML mit ElementTree

ElementTree ist eine API zur Bearbeitung von XML-Dateien. ElementTree bietet eine einfache Möglichkeit, XML-Dateien zu verarbeiten.

Wir verwenden das folgende XML-Dokument als Beispieldaten:

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

XML mit ElementTree lesen:

Zuerst müssen wir das Modul xml.etree.ElementTree importieren.

import xml.etree.ElementTree as ET

Nun holen wir uns das Wurzelelement:

root = tree.getroot()

Nachfolgend der vollständige Code zum Einlesen der obigen XML-Daten:

import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()

# all items data
print('Expertise Data:')

for elem in root:
   for subelem in elem:
      print(subelem.text)

Ausgang:

Expertise Data:
SQL
Python

Häufig gestellte Fragen

Verwenden Sie minidom für kleine Dateien, die eine DOM-Navigation erfordern. Wählen Sie ElementTree für die meisten Aufgaben – es ist schneller, ressourcenschonender und die empfohlene, effizientere Lösung. Pythonic Standard.

Umschließen Sie die Wurzel mit einem ElementTree und rufen Sie tree.write(“out.xml”, encoding=”utf-8″, xml_declaration=True) auf. Verwenden Sie für die Einrückung ET.indent(). Python 3.9+, oder lxml's pretty_print.

lxml ist eine Drittanbieterbibliothek, die die ElementTree-API nutzt, aber auf schnellem C-Code basiert. Sie erweitert das System um XPath, XSLT und Validierung. Die Installation erfolgt über `pip install lxml`.

Standardparser sind anfällig für XXE- und Billion-Laughs-Angriffe. Installieren Sie defusedxml und importieren Sie defusedxml.ElementTree – einen direkten Ersatz, der gefährliche externe Entitäten deaktiviert.

Ja. Verwenden Sie `minidom.parseString(text)` oder `ET.fromstring(text)` von ElementTree, das direkt das Wurzelelement zurückgibt. Beide parsen XML aus einer Variablen, sodass die Ergebnisse nicht vorher gespeichert werden müssen.

Durchlaufen Sie den Elementbaum mit ElementTree und erstellen Sie aus den Tags, Attributen und dem Text jedes Elements ein Dictionary. Die Bibliothek xmltodict automatisiert die Konvertierung mittels xmltodict.parse().

XML speichert Konfigurationen, Annotationen und API-Antworten, die Modelle speisen. Pascal VOC-Bildlabels werden als XML ausgeliefert; ElementTree extracts ihre Begrenzungsrahmen für das Training.

Ja. GitHub Copilot vervollständigt minidom- und ElementTree-Muster wie parse()- und findall()-Schleifen automatisch. Tag-Namen und Kodierungen müssen weiterhin überprüft werden, und für nicht vertrauenswürdige Eingaben wird defusedxml hinzugefügt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: