Python XML-fil – Hvordan lese, skrive og analysere
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 XML-dokument, må du ha hele XML-dokumentet i minnet. I denne opplæringen vil 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 Business)
Trinn 2) Bruk parse-funksjonen til å laste og analysere XML-filen
Når vi har analysert dokumentet, vil vi skrive ut "nodenavn" av roten til dokumentet og "førstebarnsmerkenavn". Tagnavn og nodenavn 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 variabel doc og doc får resultatet av parsefunksjonen
- Vi ønsker å skrive ut nodenavnet og underordnet tagnavn fra filen, så vi erklærer det i utskriftsfunksjonen
- Kjør koden - Den skriver ut nodenavnet (#document) fra XML-filen og det første underordnede tagnavnet (ansatt) fra XML-filen
Merknader:
Nodenavn og underordnet tagnavn er standardnavnene eller egenskapene til et XML-dom.
Trinn 3) Kalle opp listen over XML-koder fra XML-dokumentet og skrives ut
Deretter kan vi også ringe listen over XML-koder fra XML-dokumentet og skrives ut. Her skrev vi ut settet med ferdigheter som SQL, Python, Testing og Business.
- Erklær den variable ekspertisen, som vi skal trekke ut all ekspertisen navnet ansatte har
- Bruk dom standardfunksjonen kalt "getElementsByTagName"
- Dette vil få alle elementene kalt ferdighet
- Erklær løkke over hver av ferdighetsmerkene
- Kjør koden - Den vil gi en liste over 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å kode for å legge til det nye attributtet (BigData) til den eksisterende XML-koden
- Deretter må du skrive ut XML-koden med nye attributter lagt til den eksisterende XML-koden
- For å legge til en ny XML og legge den til dokumentet bruker vi koden "doc.create elements"
- Denne koden vil lage en ny ferdighetstagg for vårt nye attributt "Big-data"
- Legg til denne ferdighetskoden i dokumentets første barn (ansatt)
- Kjør koden - den nye taggen "big data" 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 å manipulere XML. ElementTree er den enkle måten å 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 lesing ovenfor xml-data
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)
produksjon:
Expertise Data: SQL Python
Sammendrag
Python lar deg analysere hele XML-dokumentet på én gang og ikke bare én linje om gangen. For å analysere XML-dokumenter må du ha hele dokumentet i minnet.
- For å analysere XML-dokument
- Importer xml.dom.minidom
- Bruk funksjonen "parse" for å analysere dokumentet ( doc=xml.dom.minidom.parse (filnavn);
- Kalle opp listen over XML-tagger fra XML-dokumentet ved å bruke kode (=doc.getElementsByTagName( "navn på xml-tagger")
- For å opprette og legge til nytt attributt i XML-dokument
- Bruk funksjonen "createElement"




