Pythoni XML-i parseri õpetus: lugege xml-faili näidet (Minidom, ElementTree)

Lang L: none (table-of-contents):

Anonim

Mis on XML?

XML tähistab eXtensible Markup Language. See oli mõeldud väikeste ja keskmise suurusega andmete salvestamiseks ja transportimiseks ning seda kasutatakse laialdaselt struktureeritud teabe jagamiseks.

Python võimaldab teil XML-dokumenti sõeluda ja muuta. XML-dokumendi sõelumiseks peab kogu XML-dokument olema mälus. Selles õpetuses näeme, kuidas saame Pythonis XML-i minidom-klassi kasutada XML-faili laadimiseks ja sõelumiseks.

Selles õpetuses õpime-

  • XML-i sõelumine minidomi abil
  • XML-sõlme loomine
  • XML-i sõelumine ElementTree'i abil

XML-i sõelumine minidomi abil

Oleme loonud XML-faili näidise, mida kavatseme sõeluda.

1. samm. Failis näeme eesnime, perekonnanime, kodu ja asjatundlikkusala (SQL, Python, testimine ja äri)

Samm 2) Kui oleme dokumendi sõelunud, printime välja dokumendi juure "sõlme nime" ja " esiklapse sildi" . Sildi- ja sõlmenimi on XML-faili standardsed atribuudid.

  • Importige moodul xml.dom.minidom ja deklareerige fail, mis tuleb sõeluda (myxml.xml)
  • See fail sisaldab põhiteavet töötaja kohta, nagu eesnimi, perekonnanimi, kodu, teadmised jne.
  • XML-faili laadimiseks ja sõelumiseks kasutame XML-i minidomi sõelumisfunktsiooni
  • Meil on muutuja doc ja doc saab parsimisfunktsiooni tulemuse
  • Soovime failist välja trükkida sõlme- ja lapsemärgi nime, seega deklareerime selle printimisfunktsioonis
  • Käivitage kood - see prindib XML-failist sõlmpunkti (#document) ja XML-failist esimese lapse sildinime (töötaja)

Märkus :

Nime- ja lastesildinimi on XML-i domeeni standardsed nimed või atribuudid. Juhul, kui te pole seda tüüpi nimetamisviisidega tuttav.

Samm 3) Saame ka XML-dokumendist välja kutsuda XML-märgendite loendi ja välja printida. Siit printisime välja oskuste komplekti nagu SQL, Python, Testing ja Business.

  • Deklareerige muutuv ekspertiis, millest võtame välja kogu töötaja ekspertiisi
  • Kasutage dom standardfunktsiooni nimega "getElementsByTagName"
  • See saab kõik elemendid nimega oskus
  • Deklareerige silmus kõigi oskuste siltide kohal
  • Käivitage kood - see annab nelja oskuse loendi

XML-sõlme loomine

Saame luua uue atribuudi funktsiooni "createElement" abil ja seejärel lisada see uus atribuut või silt olemasolevatele XML-i siltidele. Lisasime oma XML-faili uue sildi "BigData".

  1. Uue atribuudi (BigData) lisamiseks olemasolevale XML-märgendile peate koodi tegema
  2. Seejärel peate välja printima XML-märgendi uute atribuutidega, mis on lisatud olemasolevale XML-märgendile
  • Uue XML-i lisamiseks ja selle lisamiseks dokumendile kasutame koodi "doc.create elements"
  • See kood loob uue oskussildi meie uuele atribuudile "Big-data"
  • Lisage see oskuste silt dokumendi esimesele lapsele (töötajale)
  • Käivitage kood - kuvatakse uus silt "big data" koos muu asjatundlikkuse loendiga

XML-i parseri näide

Python 2 näide

importige xml.dom.minidomdef main ():# kasutage XML-faili laadimiseks ja sõelumiseks funktsiooni parse ()doc = xml.dom.minidom.parse ("Myxml.xml");# printige välja dokumendisõlm ja esimese alammärgendi nimiprintige doc.nodeNameprintige doc.firstChild.tagName# hankige dokumendist XML-siltide loend ja printige need kõikekspertiis = doc.getElementsByTagName ("ekspertiis")print "% d asjatundlikkus:"% asjatundlikkus.lengthasjatundlikkuse oskus:print skill.getAttribute ("nimi")# looge uus XML-silt ja lisage see dokumentinewexpertise = doc.createElement ("teadmised")newexpertise.setAttribute ("nimi", "BigData")doc.firstChild.appendChild (uusekspertiis)print ""ekspertiis = doc.getElementsByTagName ("ekspertiis")print "% d asjatundlikkus:"% asjatundlikkus.lengthasjatundlikkuse oskus:print skill.getAttribute ("nimi")kui nimi == "__main__":peamine ();

Python 3 näide

importige xml.dom.minidomdef main ():# kasutage XML-faili laadimiseks ja sõelumiseks funktsiooni parse ()doc = xml.dom.minidom.parse ("Myxml.xml");# printige välja dokumendisõlm ja esimese alammärgendi nimiprint (doc.nodeName)print (doc.firstChild.tagName)# hankige dokumendist XML-siltide loend ja printige need kõikekspertiis = doc.getElementsByTagName ("ekspertiis")print ("% d asjatundlikkus:"% asjatundlikkus.length)asjatundlikkuse oskus:print (skill.getAttribute ("nimi"))# looge uus XML-silt ja lisage see dokumentinewexpertise = doc.createElement ("teadmised")newexpertise.setAttribute ("nimi", "BigData")doc.firstChild.appendChild (uusekspertiis)print ("")ekspertiis = doc.getElementsByTagName ("ekspertiis")print ("% d asjatundlikkus:"% asjatundlikkus.length)asjatundlikkuse oskus:print (skill.getAttribute ("nimi"))kui __nimi__ == "__main__":peamine ();

XML-i sõelumine ElementTree'i abil

ElementTree on API XML-iga manipuleerimiseks. ElementTree on lihtne viis XML-failide töötlemiseks.

Prooviandmetena kasutame järgmist XML-dokumenti:

SQLPython

XML-i lugemine ElementTree abil:

kõigepealt peame importima mooduli xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Nüüd toome juurelemendi:

root = tree.getroot()

Allpool on täielik kood xml-i andmete lugemiseks

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)
väljund:
Expertise Data:SQLPython

Kokkuvõte:

Python võimaldab teil sõeluda kogu XML-dokument korraga, mitte ainult üks rida korraga. XML-dokumendi sõelumiseks peab kogu dokument olema mälus.

  • XML-dokumendi sõelumine
    • Importige xml.dom.minidom
    • Dokumendi sõelumiseks kasutage funktsiooni "parsida" (doc = xml.dom.minidom.parse (faili nimi);
    • Kutsuge XML-dokumendi XML-märgendite loendit koodi abil (= doc.getElementsByTagName ("xml-i siltide nimi")
  • XML-dokumendis uue atribuudi loomine ja lisamine
    • Kasuta funktsiooni "createElement"