Python XML Parser Tutorial: Les xml-fileksempel (Minidom, ElementTree)

Innholdsfortegnelse:

Anonim

Hva er XML?

XML står for eXtensible Markup Language. Den ble designet for å lagre og transportere små til mellomstore datamengder og brukes mye til å dele strukturert informasjon.

Python lar deg analysere og endre XML-dokument. 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-klasse i Python til å laste og analysere XML-fil.

I denne veiledningen vil vi lære-

  • Hvordan analysere XML ved hjelp av minidom
  • Hvordan lage XML-node
  • Hvordan analysere XML ved hjelp av ElementTree

Hvordan analysere XML ved hjelp av minidom

Vi har opprettet en prøve XML-fil som vi skal analysere.

Trinn 1) Innvendig fil kan vi se fornavn, etternavn, hjem og kompetanseområde (SQL, Python, Testing og Business)

Trinn 2) Når vi har analysert dokumentet, vil vi skrive ut "nodenavnet" på roten til dokumentet og " førstebarnstagnamnet" . Tagname og nodename er standardegenskapene til XML-filen.

  • Importer xml.dom.minidom-modulen og erklær filen som må analyseres (myxml.xml)
  • Denne filen inneholder grunnleggende informasjon om ansatte som fornavn, etternavn, hjem, ekspertise osv.
  • Vi bruker parsefunksjonen på XML minidom for å laste og parsere XML-filen
  • Vi har variabel doc og doc får resultatet av analysefunksjonen
  • Vi ønsker å skrive ut nodenavnet og barnets tagname fra filen, så vi erklærer det i utskriftsfunksjon
  • Kjør koden - Den skriver ut nodenavnet (#document) fra XML-filen og det første underordnede tagnamnet (ansatt) fra XML-filen

Merk :

Nodenavn og underordnet navn er standardnavnene eller egenskapene til en XML-dom. I tilfelle hvis du ikke er kjent med denne typen navnekonvensjoner.

Trinn 3) Vi kan også ringe listen over XML-koder fra XML-dokumentet og skrives ut. Her skrev vi ut ferdighetssettet som SQL, Python, Testing og Business.

  • Erklær den variable kompetansen som vi skal trekke ut all den kompetansenavnet ansatt har
  • Bruk dom-standardfunksjonen kalt "getElementsByTagName"
  • Dette vil få alle elementene som heter ferdighet
  • Erklær løkke over hver av ferdighetskodene
  • Kjør koden - Det vil gi en liste over fire ferdigheter

Hvordan lage XML-node

Vi kan opprette et nytt attributt ved å bruke "createElement" -funksjonen og deretter legge dette nye attributtet eller merket til de eksisterende XML-kodene. Vi la til en ny tag "BigData" i XML-filen.

  1. Du må kode for å legge til det nye attributtet (BigData) til den eksisterende XML-koden
  2. Deretter må du skrive ut XML-taggen med nye attributter lagt til eksisterende XML-tag
  • For å legge til en ny XML og legge den til i dokumentet bruker vi koden "doc.create elements"
  • Denne koden vil opprette en ny ferdighetsmerke 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 med den andre listen over ekspertise

XML-parsereksempel

Python 2 Eksempel

importere xml.dom.minidomdef main ():# bruk parse () -funksjonen til å laste inn og analysere en XML-fildoc = xml.dom.minidom.parse ("Myxml.xml");# skriv ut dokumentnoden og navnet på den første barnetaggenskriv ut doc.nodeNameskriv ut doc.firstChild.tagName# få en liste over XML-koder fra dokumentet og skriv ut hverekspertise = doc.getElementsByTagName ("ekspertise")skrive ut "% d ekspertise:"% expertise.lengthfor dyktighet i ekspertise:print skill.getAttribute ("navn")# opprett en ny XML-tag og legg den til i dokumentetnewexpertise = doc.createElement ("ekspertise")newexpertise.setAttribute ("navn", "BigData")doc.firstChild.appendChild (newexpertise)skrive ut " "ekspertise = doc.getElementsByTagName ("ekspertise")skrive ut "% d ekspertise:"% expertise.lengthfor dyktighet i ekspertise:print skill.getAttribute ("navn")hvis navn == "__main__":hoved();

Python 3 Eksempel

importere xml.dom.minidomdef main ():# bruk parse () -funksjonen til å laste inn og analysere en XML-fildoc = xml.dom.minidom.parse ("Myxml.xml");# skriv ut dokumentnoden og navnet på den første barnetaggenskriv ut (doc.nodeName)skriv ut (doc.firstChild.tagName)# få en liste over XML-koder fra dokumentet og skriv ut hverekspertise = doc.getElementsByTagName ("ekspertise")print ("% d ekspertise:"% expertise.length)for dyktighet i ekspertise:skriv ut (skill.getAttribute ("navn"))# opprett en ny XML-tag og legg den til i dokumentetnewexpertise = doc.createElement ("ekspertise")newexpertise.setAttribute ("navn", "BigData")doc.firstChild.appendChild (newexpertise)skrive ut (" ")ekspertise = doc.getElementsByTagName ("ekspertise")print ("% d ekspertise:"% expertise.length)for dyktighet i ekspertise:skriv ut (skill.getAttribute ("navn"))hvis __name__ == "__main__":hoved();

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:

SQLPython

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 over 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)
produksjon:
Expertise Data:SQLPython

Sammendrag:

Python lar deg analysere hele XML-dokumentet på en gang og ikke bare en linje om gangen. For å analysere XML-dokument 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);
    • Ring listen over XML-koder fra XML-dokumentet ved hjelp av kode (= doc.getElementsByTagName ("navnet på xml-koder")
  • Å lage og legge til nytt attributt i XML-dokument
    • Bruk funksjonen "createElement"