Python XML datoteka – Kako čitati, pisati i analizirati
Što je XML?
XML je kratica za eXtensible Markup Language. Dizajniran je za pohranu i prijenos malih do srednjih količina podataka i naširoko se koristi za dijeljenje strukturiranih informacija.
Python omogućuje analizu i izmjenu XML dokumenata. Kako biste raščlanili XML dokument, morate imati cijeli XML dokument u memoriji. U ovom vodiču ćemo vidjeti kako možemo koristiti XML minidom klasu u Python za učitavanje i raščlanjivanje XML datoteka.
Kako analizirati XML pomoću minidoma
Napravili smo primjer XML datoteke koju ćemo raščlaniti.
Korak 1) Stvorite oglednu XML datoteku
Unutar datoteke možemo vidjeti ime, prezime, dom i područje stručnosti (SQL, Python, testiranje i poslovanje)
Korak 2) Koristite funkciju raščlanjivanja za učitavanje i raščlanjivanje XML datoteke
Nakon što raščlanimo dokument, ispisat ćemo "ime čvora" korijena dokumenta i "naziv oznake prvog djeteta”. Naziv oznake i naziv čvora standardna su svojstva XML datoteke.
- Uvezite modul xml.dom.minidom i deklarirajte datoteku koja se mora analizirati (myxml.xml)
- Ova datoteka sadrži neke osnovne podatke o zaposleniku kao što su ime, prezime, dom, stručnost itd.
- Koristimo funkciju raščlanjivanja na XML minidomu za učitavanje i raščlanjivanje XML datoteke
- Imamo varijablu doc i doc dobiva rezultat funkcije parse
- Želimo ispisati naziv čvora i podređeni tagname iz datoteke, pa ga deklariramo u funkciji ispisa
- Pokrenite kod - ispisuje naziv čvora (#document) iz XML datoteke i prvi podređeni tagname (zaposlenik) iz XML datoteke
bilješke:
Ime čvora i podređeno ime standardna su imena ili svojstva XML doma.
Korak 3) Pozovite popis XML oznaka iz XML dokumenta i ispišite ga
Dalje, također možemo pozvati popis XML oznaka iz XML dokumenta i ispisati ga. Ovdje smo ispisali skup vještina kao što je SQL, Python, Ispitivanje i Posao.
- Deklarirajte varijablu stručnost iz koje ćemo izdvojiti svu stručnost koju zaposlenik ima
- Koristite dom standardnu funkciju pod nazivom "getElementsByTagName"
- Time ćete dobiti sve elemente pod nazivom skill
- Deklarirajte petlju preko svake od oznaka vještina
- Pokrenite kod - to će dati popis od četiri vještine
Kako napisati XML čvor
Možemo stvoriti novi atribut pomoću funkcije "createElement" i zatim dodati ovaj novi atribut ili oznaku postojećim XML oznakama. Dodali smo novu oznaku "BigData" u našu XML datoteku.
- Morate kodirati da biste dodali novi atribut (BigData) postojećoj XML oznaci
- Zatim morate ispisati XML oznaku s novim atributima dodanim uz postojeću XML oznaku
- Da bismo dodali novi XML i dodali ga u dokument, koristimo kod “doc.create elements”
- Ovaj kod će stvoriti novu oznaku vještine za naš novi atribut "Big-data"
- Dodajte ovu oznaku vještine u prvi podređeni dokument (zaposlenik)
- Pokrenite kod - nova oznaka "veliki podaci" pojavit će se s drugim popisom stručnosti
Primjer XML parsera
Python 2 Primjer
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 Primjer
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();
Kako analizirati XML pomoću ElementTree
ElementTree je API za manipuliranje XML-om. ElementTree je jednostavan način za obradu XML datoteka.
Kao uzorak podataka koristimo sljedeći XML dokument:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Čitanje XML-a pomoću ElementTree:
prvo moramo uvesti modul xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Sada dohvatimo korijenski element:
root = tree.getroot()
Slijedi potpuni kod za čitanje gornjih xml podataka
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)
izlaz:
Expertise Data: SQL Python
Rezime
Python omogućuje raščlanjivanje cijelog XML dokumenta odjednom, a ne samo jedan redak odjednom. Kako biste analizirali XML dokument morate imati cijeli dokument u memoriji.
- Za analizu XML dokumenta
- Uvezi xml.dom.minidom
- Koristite funkciju “parse” za analizu dokumenta ( doc=xml.dom.minidom.parse (naziv datoteke);
- Pozovite popis XML oznaka iz XML dokumenta pomoću koda (=doc.getElementsByTagName( “naziv xml oznaka”)
- Za stvaranje i dodavanje novog atributa u XML dokument
- Koristite funkciju “createElement”