Python XML-fil – Hvordan lese, skrive og analysere
⚡ Smart oppsummering
Python XML-behandling lar deg lese, skrive og analysere XML-dokumenter ved hjelp av de innebygde minidom- og ElementTree-modulene. Minidom-klassen laster en fil inn i minnet som en DOM, mens ElementTree tilbyr en raskere og mer effektiv prosessering. Pythonic tree API.

Avsnittene nedenfor dekker parsing, skriving og lesing av XML-filer i Python.
Hva er XML?
XML står for eXtensible Markup Language. Den ble designet for å lagre og transportere små til mellomstore mengder data og er mye brukt for å dele strukturert informasjon.
Python lar deg analysere og endre XML-dokumenter. For å analysere et XML-dokument må du ha hele XML-dokumentet i minnet. I denne veiledningen skal vi se hvordan vi kan bruke XML minidom-klassen i Python for å laste og analysere XML-filer.
Hvordan analysere XML ved hjelp av minidom
Vi har laget en eksempel-XML-fil som vi skal analysere.
Trinn 1) Opprett eksempel på XML-fil
Inne i filen kan vi se fornavn, etternavn, hjem og ekspertiseområdet (SQL, Python, Testing og forretningsdrift).
Trinn 2) Bruk parse-funksjonen til å laste og analysere XML-filen
Når vi har analysert dokumentet, skriver vi ut «nodenavnet» til roten av dokumentet og «firstchild tagname». Tagname og nodename er standardegenskapene til XML-filen.
- Importer xml.dom.minidom-modulen og deklarer filen som må analyseres (myxml.xml)
- Denne filen inneholder grunnleggende informasjon om en ansatt som fornavn, etternavn, hjem, ekspertise, etc.
- Vi bruker parse-funksjonen på XML-minidomen for å laste og analysere XML-filen
- Vi har en variabel doc, og doc får resultatet av parse-funksjonen.
- Vi ønsker å skrive ut nodenavnet og det underordnede tagnavnet fra filen, så vi deklarerer det i utskriftsfunksjonen.
- Kjør koden - Den skriver ut nodenavnet (#document) fra XML-filen og det første underordnede tagnavnet (ansatt) fra XML-filen
MerknaderNodenavn og underordnet tagnavn er standardnavnene eller egenskapene til en XML-dom.
Trinn 3) Hent frem listen over XML-tagger fra XML-dokumentet og skriv den ut
Deretter kan vi også kalle opp listen over XML-tagger fra XML-dokumentet og skrive den ut. Her skrev vi ut settet med ferdigheter som SQL, Python, Testing og Business.
- Deklarer variabelen ekspertise, som vi skal bruke til å utledetracalle navnene på ekspertisen den ansatte har
- Bruk dom standardfunksjonen kalt "getElementsByTagName"
- Dette vil få alle elementene kalt ferdighet
- Deklarer en løkke over hver av ferdighetstaggene
- Kjør koden – den vil gi en liste med fire ferdigheter
Hvordan skrive XML-node
Vi kan opprette et nytt attributt ved å bruke "createElement"-funksjonen og deretter legge til dette nye attributtet eller taggen til de eksisterende XML-taggene. Vi la til en ny tag "BigData" i XML-filen vår.
- Du må skrive kode for å legge til det nye attributtet (BigData) i den eksisterende XML-taggen.
- Deretter må du skrive ut XML-taggen med det nye attributtet lagt til den eksisterende XML-taggen.
- For å legge til en ny XML-tag og legge den til dokumentet, bruker vi koden «doc.createElement».
- Denne koden vil opprette en ny ferdighetstag for vårt nye attributt «BigData».
- Legg til denne ferdighetstaggen i dokumentets første underordnede (ansatt)
- Kjør koden – den nye taggen «BigData» vil vises sammen med den andre listen over ekspertise
Eksempel på XML-parser
Python 2 Eksempel
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 Eksempel
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();
Hvordan analysere XML ved hjelp av ElementTree
ElementTree er et API for manipulering av XML. ElementTree er en enkel måte å behandle XML-filer på.
Vi bruker følgende XML-dokument som eksempeldata:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Lese XML ved hjelp av ElementTree:
Vi må først importere xml.etree.ElementTree-modulen.
import xml.etree.ElementTree as ET
La oss nå hente rotelementet:
root = tree.getroot()
Følgende er den komplette koden for å lese XML-dataene ovenfor:
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)
Utgang:
Expertise Data: SQL Python




