Vadnica za razčlenjevalnik Python XML: preberite primer datoteke xml (Minidom, ElementTree)

Kazalo:

Anonim

Kaj je XML?

XML pomeni eXtensible Markup Language. Zasnovan je bil za shranjevanje in prevoz majhnih do srednje velikih količin podatkov in se pogosto uporablja za izmenjavo strukturiranih informacij.

Python vam omogoča razčlenitev in spreminjanje dokumenta XML. Če želite razčleniti dokument XML, morate imeti v pomnilniku celoten dokument XML. V tej vadnici bomo videli, kako lahko uporabimo razred XID minidom v Pythonu za nalaganje in razčlenitev datoteke XML.

V tej vadnici se bomo naučili -

  • Kako razčleniti XML z uporabo minidoma
  • Kako ustvariti vozlišče XML
  • Kako razčleniti XML z uporabo ElementTree

Kako razčleniti XML z uporabo minidoma

Ustvarili smo vzorčno datoteko XML, ki jo bomo razčlenili.

Korak 1) V datoteki lahko vidimo ime, priimek, dom in strokovno področje (SQL, Python, testiranje in poslovanje)

Korak 2) Ko bomo dokument razčlenili, bomo izpisali " ime vozlišča" korena dokumenta in "ime prvega otroka" . Ime oznake in ime vozlišča sta standardni lastnosti datoteke XML.

  • Uvozite modul xml.dom.minidom in prijavite datoteko, ki jo je treba razčleniti (myxml.xml)
  • Ta datoteka vsebuje nekaj osnovnih informacij o zaposlenem, kot so ime, priimek, dom, strokovno znanje itd.
  • Za nalaganje in razčlenitev datoteke XML uporabljamo funkcijo razčlenjevanja v minimomu XML
  • Imamo spremenljiv dokument in dokument dobi rezultat funkcije razčlenjevanja
  • Iz datoteke želimo natisniti ime vozlišča in podrejeno ime, zato ga prijavimo v funkciji tiskanja
  • Zaženite kodo - iz datoteke XML izpiše ime vozlišča (#document) in iz datoteke XML prvo podrejeno ime oznake (zaposleni)

Opomba :

Ime vozlišča in podrejeno ime oznake sta standardni imeni ali lastnosti domene XML. Če niste seznanjeni s tovrstnimi pravili poimenovanja.

3. korak) Prav tako lahko pokličemo seznam oznak XML iz dokumenta XML in ga natisnemo. Tu smo natisnili nabor veščin, kot so SQL, Python, testiranje in poslovanje.

  • Navedite spremenljivo strokovno znanje, iz katerega bomo izvlekli vse strokovno znanje, ki ga ima zaposleni
  • Uporabite standardno funkcijo dom, imenovano "getElementsByTagName"
  • Tako boste dobili vse elemente, imenovane spretnost
  • Navedite zanko nad vsako od oznak spretnosti
  • Zaženite kodo - podala bo seznam štirih veščin

Kako ustvariti vozlišče XML

Ustvarimo lahko nov atribut s funkcijo "createElement" in nato ta novi atribut ali oznako dodamo obstoječim oznakam XML. V datoteko XML smo dodali novo oznako "BigData".

  1. Če želite dodati nov atribut (BigData) obstoječi oznaki XML, morate kodirati
  2. Nato morate natisniti oznako XML z novimi atributi, ki so priloženi obstoječi oznaki XML
  • Če želimo dodati nov XML in ga dodati v dokument, uporabimo kodo "doc.create elements"
  • Ta koda bo ustvarila novo oznako spretnosti za naš novi atribut "Veliki podatki"
  • Dodajte to oznako spretnosti v dokument prvi otrok (zaposleni)
  • Zaženite kodo - nova oznaka "veliki podatki" se bo pojavila z drugim seznamom strokovnega znanja

Primer razčlenjevalnika XML

Python 2 Primer

uvoz xml.dom.minidomdef main ():# uporabite funkcijo parse () za nalaganje in razčlenitev datoteke XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# natisnite vozlišče dokumenta in ime prve podrejene oznakenatisni doc.nodeNamenatisni doc.firstChild.tagName# dobite seznam oznak XML iz dokumenta in natisnite vsakoexpert = doc.getElementsByTagName ("strokovno znanje")natisni "% d strokovnost:"% strokovnost.dolžinaza strokovno znanje:tiskanje skill.getAttribute ("ime")# ustvarite novo oznako XML in jo dodajte v dokumentnewexpertise = doc.createElement ("strokovno znanje")newexpertise.setAttribute ("ime", "BigData")doc.firstChild.appendChild (novo strokovno znanje)natisni ""expert = doc.getElementsByTagName ("strokovno znanje")natisni "% d strokovnost:"% strokovnost.dolžinaza strokovno znanje:tiskanje skill.getAttribute ("ime")če je ime == "__main__":glavni ();

Python 3 Primer

uvoz xml.dom.minidomdef main ():# uporabite funkcijo parse () za nalaganje in razčlenitev datoteke XMLdoc = xml.dom.minidom.parse ("Myxml.xml");# natisnite vozlišče dokumenta in ime prve podrejene oznakeprint (doc.nodeName)tiskanje (doc.firstChild.tagName)# dobite seznam oznak XML iz dokumenta in natisnite vsakoexpert = doc.getElementsByTagName ("strokovno znanje")print ("% d strokovno znanje:"% strokovno znanje.dolžina)za strokovno znanje:tisk (skill.getAttribute ("ime"))# ustvarite novo oznako XML in jo dodajte v dokumentnewexpertise = doc.createElement ("strokovno znanje")newexpertise.setAttribute ("ime", "BigData")doc.firstChild.appendChild (novo strokovno znanje)natisni ("")expert = doc.getElementsByTagName ("strokovno znanje")print ("% d strokovno znanje:"% strokovno znanje.dolžina)za strokovno znanje:tisk (skill.getAttribute ("ime"))če je __name__ == "__glavna__":glavni ();

Kako razčleniti XML z uporabo ElementTree

ElementTree je API za manipulacijo XML. ElementTree je enostaven način za obdelavo datotek XML.

Kot vzorčne podatke uporabljamo naslednji dokument XML:

SQLPython

Branje XML z uporabo ElementTree:

najprej moramo uvoziti modul xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Zdaj pa poiščimo korenski element:

root = tree.getroot()

Sledi celotna koda za branje zgoraj navedenih podatkov xml

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

Povzetek:

Python vam omogoča razčlenitev celotnega dokumenta XML naenkrat in ne le ene vrstice hkrati. Če želite razčleniti dokument XML, morate imeti celoten dokument v pomnilniku.

  • Za razčlenitev dokumenta XML
    • Uvozi xml.dom.minidom
    • Za razčlenitev dokumenta uporabite funkcijo "razčleni" (doc = xml.dom.minidom.parse (ime datoteke);
    • Pokličite seznam oznak XML iz dokumenta XML s kodo (= doc.getElementsByTagName ("ime oznak xml")
  • Ustvarjanje in dodajanje novega atributa v dokumentu XML
    • Uporabite funkcijo "createElement"