Python XML Parser-vejledning: Læs eksempel på xml-fil (Minidom, ElementTree)

Indholdsfortegnelse:

Anonim

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.

  1. Du skal kode for at tilføje den nye attribut (BigData) til det eksisterende XML-tag
  2. 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:

SQLPython

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"