Hvad er XML?
XML står for eXtensible Markup Language. Det var designet til at gemme og transportere små til mellemstore datamængder og bruges i vid udstrækning til deling af struktureret information.
Python giver dig mulighed for at analysere og ændre XML-dokument. For at parse XML-dokument skal du have hele XML-dokumentet i hukommelsen. I denne vejledning vil vi se, hvordan vi kan bruge XML-minidom-klasse i Python til at indlæse og parse XML-fil.
I denne vejledning lærer vi-
- Sådan analyseres XML ved hjælp af minidom
- Sådan oprettes XML-node
- Sådan analyseres XML ved hjælp af ElementTree
Sådan analyseres XML ved hjælp af minidom
Vi har oprettet en prøve XML-fil, som vi skal analysere.
Trin 1) Inde i filen kan vi se fornavn, efternavn, hjem og ekspertiseområde (SQL, Python, Testing og Business)
Trin 2) Når vi har parset dokumentet, udskriver vi "node-navnet" på dokumentets rod og " firstchild tagname" . Tagname og nodenavn er XML-filens standardegenskaber.
- Importer xml.dom.minidom-modulet og erklær den fil, der skal parses (myxml.xml)
- Denne fil indeholder nogle grundlæggende oplysninger om medarbejder som fornavn, efternavn, hjem, ekspertise osv.
- Vi bruger parsefunktionen på XML-minidom til at indlæse og parsere XML-filen
- Vi har variabel doc, og doc får resultatet af parse-funktionen
- Vi ønsker at udskrive nodenavn og børnetagnamn fra filen, så vi erklærer det i udskrivningsfunktion
- Kør koden - Den udskriver nodenavnet (#document) fra XML-filen og det første underordnede tagname (medarbejder) fra XML-filen
Bemærk :
Nodenavn og børnetagnamn er standardnavne eller egenskaber for en XML-dom. I tilfælde af at du ikke er bekendt med denne type navngivningskonventioner.
Trin 3) Vi kan også kalde listen over XML-tags fra XML-dokumentet og udskrives. Her udskrev vi sæt færdigheder som SQL, Python, Testing og Business.
- Erklær den variable ekspertise, hvorfra vi udvinder al den ekspertise, som medarbejderen har
- Brug dom-standardfunktionen kaldet "getElementsByTagName"
- Dette får alle de elementer, der hedder dygtighed
- Erklær løkke over hver af færdighedskoderne
- Kør koden - Det vil give en liste over fire færdigheder
Sådan oprettes XML-node
Vi kan oprette en ny attribut ved hjælp af "createElement" -funktionen og derefter tilføje denne nye attribut eller tag til de eksisterende XML-tags. Vi tilføjede et nyt tag "BigData" i vores XML-fil.
- Du skal kode for at tilføje den nye attribut (BigData) til det eksisterende XML-tag
- Derefter skal du udskrive XML-tagget med nye attributter tilføjet med eksisterende XML-tag
- For at tilføje en ny XML og føje den til dokumentet bruger vi koden "doc.create elements"
- Denne kode opretter et nyt færdighedstag til vores nye attribut "Big-data"
- Tilføj dette færdighedskort i dokumentets første barn (medarbejder)
- Kør koden - det nye tag "big data" vises med den anden liste over ekspertise
XML-parsereksempel
Python 2-eksempel
importere xml.dom.minidomdef hoved ():# brug funktionen parse () til at indlæse og analysere en XML-fildoc = xml.dom.minidom.parse ("Myxml.xml");# udskriv dokumentnoden og navnet på det første underordnede tagudskriv doc.nodeNameudskriv doc.firstChild.tagName# få en liste over XML-tags fra dokumentet og udskriv hver enkeltekspertise = doc.getElementsByTagName ("ekspertise")udskrive "% d ekspertise:"% expertise.lengthfor dygtighed i ekspertise:print skill.getAttribute ("navn")# Opret et nyt XML-tag, og tilføj det til dokumentetnewexpertise = doc.createElement ("ekspertise")newexpertise.setAttribute ("navn", "BigData")doc.firstChild.appendChild (nyekspertise)Print " "ekspertise = doc.getElementsByTagName ("ekspertise")udskrive "% d ekspertise:"% expertise.lengthfor dygtighed i ekspertise:print skill.getAttribute ("navn")hvis navn == "__main__":hoved ();
Python 3 Eksempel
importere xml.dom.minidomdef hoved ():# brug funktionen parse () til at indlæse og analysere en XML-fildoc = xml.dom.minidom.parse ("Myxml.xml");# udskriv dokumentnoden og navnet på det første underordnede tagudskrive (doc.nodeName)udskrive (doc.firstChild.tagName)# få en liste over XML-tags fra dokumentet og udskriv hver enkeltekspertise = doc.getElementsByTagName ("ekspertise")print ("% d ekspertise:"% expertise.length)for dygtighed i ekspertise:print (skill.getAttribute ("navn"))# Opret et nyt XML-tag, og tilføj det til dokumentetnewexpertise = doc.createElement ("ekspertise")newexpertise.setAttribute ("navn", "BigData")doc.firstChild.appendChild (nyekspertise)Print (" ")ekspertise = doc.getElementsByTagName ("ekspertise")print ("% d ekspertise:"% expertise.length)for dygtighed i ekspertise:print (skill.getAttribute ("navn"))hvis __name__ == "__main__":hoved ();
Sådan analyseres XML ved hjælp af ElementTree
ElementTree er en API til manipulation af XML. ElementTree er den nemme måde at behandle XML-filer på.
Vi bruger følgende XML-dokument som eksempeldata:
- SQL
- Python
Læsning af XML ved hjælp af ElementTree:
vi skal først importere xml.etree.ElementTree-modulet.
import xml.etree.ElementTree as ET
Lad os nu hente rodelementet:
root = tree.getroot()
Følgende er den komplette kode til læsning af ovenstående xml-data
import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)produktion:
Expertise Data:SQLPython
Resumé:
Python giver dig mulighed for at analysere hele XML-dokumentet på én gang og ikke kun en linje ad gangen. For at parse XML-dokument skal du have hele dokumentet i hukommelsen.
- For at analysere XML-dokument
- Importer xml.dom.minidom
- Brug funktionen "parse" til at analysere dokumentet (doc = xml.dom.minidom.parse (filnavn);
- Ring til listen over XML-tags fra XML-dokumentet ved hjælp af kode (= doc.getElementsByTagName ("navnet på xml-tags")
- For at oprette og tilføje ny attribut i XML-dokument
- Brug funktionen "createElement"