Python XML-Datei – Lesen, Schreiben und Analysieren

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 Ihnen das Parsen und Ändern von XML-Dokumenten. Um XML-Dokumente zu parsen, müssen Sie das gesamte XML-Dokument im Speicher haben. In diesem Tutorial werden wir sehen, wie wir die XML-Minidom-Klasse in 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 Business)

So analysieren Sie XML mit Minidom

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

Sobald wir das Dokument analysiert haben, drucken wir es aus "Knotenname" des Stammverzeichnisses des Dokuments und des „firstchild tagname“. Tagname und Knotenname sind die Standardeigenschaften der XML-Datei.

Analysieren Sie XML mit Minidom

  • Importieren Sie das Modul xml.dom.minidom und deklarieren Sie die zu analysierende 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 die 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 drucken, also deklarieren wir ihn in der Druckfunktion
  • 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

Hinweis:

Knotenname und Name des untergeordneten Tags sind die Standardnamen oder Eigenschaften eines XML-Doms.

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

Als nächstes können wir auch die Liste der XML-Tags aus dem XML-Dokument aufrufen und ausdrucken. Hier haben wir den Satz von Fähigkeiten wie SQL ausgedruckt, Python, Testen und Geschäft.

Analysieren Sie XML mit Minidom

  • Deklarieren Sie die variable Fachkompetenz, aus der wir die gesamte Fachkompetenz des Mitarbeiters extrahieren
  • Verwenden Sie die Dom-Standardfunktion namens „getElementsByTagName“.
  • Dadurch werden alle Elemente mit dem Namen „skill“ abgerufen
  • Deklarieren Sie eine Schleife über jedes einzelne Skill-Tag
  • Führen Sie den Code aus. Es wird eine Liste mit vier Fähigkeiten angezeigt

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 erstellen, um das neue Attribut (BigData) zum vorhandenen XML-Tag hinzuzufügen
  2. Anschließend müssen Sie das XML-Tag mit den neuen Attributen ausdrucken, an die das vorhandene XML-Tag angehängt wird

XML-Knoten schreiben

  • Um ein neues XML hinzuzufügen und es dem Dokument hinzuzufügen, verwenden wir den Code „doc.create elements“.
  • Dieser Code erstellt ein neues Skill-Tag für unser neues Attribut „Big-Data“.
  • Fügen Sie dieses Skill-Tag zum ersten Kind (Mitarbeiter) des Dokuments hinzu.
  • Führen Sie den Code aus – das neue Tag „Big Data“ wird zusammen mit der anderen Liste der Fachkenntnisse angezeigt

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. ElementTree ist die 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:

Wir müssen zuerst das Modul xml.etree.ElementTree importieren.

import xml.etree.ElementTree as ET

Jetzt holen wir uns das Root-Element:

root = tree.getroot()

Nachfolgend finden Sie den vollständigen Code zum Lesen 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)

Ausgabe:

Expertise Data:
SQL
Python

Zusammenfassung

Python ermöglicht Ihnen, das gesamte XML-Dokument auf einmal zu analysieren und nicht nur eine Zeile auf einmal. Um ein XML-Dokument zu analysieren, muss das gesamte Dokument im Speicher vorhanden sein.

  • Um ein XML-Dokument zu analysieren
  • Importieren Sie xml.dom.minidom
  • Verwenden Sie die Funktion „parse“, um das Dokument zu analysieren ( doc=xml.dom.minidom.parse (Dateiname);
  • Rufen Sie die Liste der XML-Tags aus dem XML-Dokument mit Code auf (=doc.getElementsByTagName( „Name der XML-Tags“)
  • So erstellen und fügen Sie ein neues Attribut in einem XML-Dokument hinzu
  • Verwenden Sie die Funktion „createElement“