Python XML ElementTree

Python XML ElementTree
Vi kan generere, endre og analysere XML -dokumenter ved hjelp av det nyttige Python Library ElementTree. Et tre antas å representere hele dokumentet. I dette treet står elementet for en enkelt node eller gren. I XML gjøres det å lese eller skrive til eller fra filer først og fremst på elementtree -nivå, mens samspill med elementene er basert på elementnivået. Python ElementTree -modulen vil bli brukt til å redigere og legge til data i XML -filer når vi lærer hvordan du kan analysere XML med Python i denne opplæringen. Vi vil også studere XPath -uttrykk og XML -trær for å forstå dataene.

XML -rammeverket benytter seg av det for å forstå data dynamisk. Det er i stor grad opptatt av å bygge websider med data som følger et forhåndsbestemt format. XML, også referert til som et XML -dokument, brukes til å generere en side. En enkel, hierarkisk struktur som ligner et tre produseres ved hjelp av XML. Hovedmålet med dette innlegget er å vise deg hvordan du kan lese og forstå filer ved hjelp av Python.

Eksempeldataene for denne delen vil bli hentet fra følgende XML -dokument:

Fra det du har lest i XML -filen, kan du se at rotelementet kalles "kunde" som inneholder alle andre elementer, for eksempel "kunder", som anses å være "barneelementer" eller "underelementer.”Det skal bemerkes at disse barnekomponentene har muligheten til å foreldre andre barneelementer, som er kjent som“ underbarnselementer ”, og fungere som sine egne foreldre.

Du vil for eksempel observere at kundeelementet inneholder noen få "attributter", for eksempel ID -er, navn og regninger, som gir enda flere detaljer. Nå skal vi lese denne XML -filinformasjonen ved å bruke de forskjellige kodene gitt nedenfor.

Eksempel 1:
Vi kan få navnet på rotkoden fra den spesifiserte XML -filen i Python ved å bruke getRoot -funksjonen fra ElementTree -modulen.

Importer XML.etree.ElementTree som et
file_root = et.analyser ('kunde.xml ').getroot ()
file_tag = file_root.stikkord
print (file_tag)

Vi har inkludert modulen ElementTree som er tildelt et alias som ET. Deretter erklærte vi et objekt som file_root. Inne i det objektet har vi en analysefunksjon som tar XML -filnavnet. Samtidig har vi kalt getroot -metoden for å få navnet roten. Vi har opprettet et annet objekt som file_tag der vi har kalt taggen med File_root -objektet. File_tag -utfallet vil bli skrevet ut på skjermen.

Du kan se navnet på rottaggen som genereres er kunder som gitt i XML -filen.

Eksempel 2:
Vi kan også få roten til attributtene som eksisterte i XML -filen. Med dette eksemplet kan vi oppnå roten til attributtet.

Importer XML.etree.ElementTree som et
f_root = et.analyser ('kunde.xml ').getroot ()
f_attributter = f_root.attrib
trykk (f_attributter)
dag = f_attributter.få ('dag')
trykk ('Dag:', dag)

Siden vi har satt inn modulen ElementTree -modulen, har vi opprettet et objekt som F_ROOT der vi har definert XML -filen i parse -metoden. Vi har også definert getroot -metoden i det objektet for å få rotnavnet. Deretter opprettet vi et objekt som f_attributter for roten til attributtet og trykket verdien. For å få den spesielle attributtet, har vi definert et objekt som en dag og tildelt attributtet til get -metoden inni det. Den spesifikke attributtet vil bli skrevet ut av utskriftsfunksjonen.

Resultatene av koden ovenfor er som følger:

Eksempel 3:
Vi kan få tilgang til attributtene til barneknutene til roten ved å implementere følgende kode.

Importer XML.etree.ElementTree som et
root = et.analyser ('kunde.xml ').getroot ()
for kunde i roten.FindAll ('kunde'):
attributter = kunde.attrib
Print (attributter)
type = attributter.få ('type')

Det første totrinnset av koden er den samme som den ovennevnte koden. Deretter har vi en for loop som rekapitulerer over hver barneknute 'kunde'. Etter den iterasjonen opprettet vi en variabel attributt som får alle nodene til attributtene. Vi har hentet typen attributter ved å tilordne 'type' inne i get -metoden.

Typene av attributtene i barneknuter vises som følger:

Eksempel 4:
Eksemplet er å få tilgang til noden til elementet fra XML -filen uten å vite tagnavnet mot det tilsvarende nodeelementet.

Importer XML.etree.ElementTree som et
root = et.analyser ('kunde.xml ').getroot ()
for kunde i roten.FindAll ('kunde'):
ID = kunde.finn ('id').tekst
Print ('ID:', ID)
Navn = kunde.finn ('navn').tekst
trykk ('Navn:', navn)
Bill = kunde.finn ('Bill').tekst
trykk ('Bill:', Bill)

Begynn med for -loopen, vi har iterert for -loopen over hver node i XML -filen. Deretter får vi element -ID, navn og regning ved å sende dem til Find -metoden og skrive ut hvert element med verdien.

Elementknuter oppnådd fra ovennevnte kode er som følger:

Eksempel 5:
La oss se det siste eksemplet der vi får tilgang til navnet på Root -taggen fra Customer XML -filen.

Importer XML.etree.ElementTree som et
root = et.analyser ('kunde.xml ').getroot ()
for kunde i roten.FindAll ('kunde'):
For varer i kunde:
i_name = elementer.stikkord
i_value = kunde.Finn (gjenstander.stikkord).tekst
print (i_name, ':', i_value)

Fra for Loop først, itererte vi over hver av nodene. Deretter brukte vi igjen for -loopen for å få alle varene i kundeknuten. Elementene får tilgang til ved å ringe tagobjektet og sende det til Find -metoden.

All varemerket fra kunde -taggen vises som følger:

Konklusjon

En essensiell Python -pakke kalt ElementTree gjør det mulig å krysse og lese XML -dokumenter. XML -dokumentet er delt opp i en håndterbar trestruktur ved hjelp av ElementTree. Hvis du er i tvil, kan du skrive ut det ved hjelp av Handy Print Command Print (ET.toString (root, koding = "utf8").avkode ('utf8')) for å undersøke hele XML -dokumentet med en gang. Når du endrer, legger til eller eliminerer fra en XML, er det nyttig å sjekke. Bruken av ElementTree og XMLS har flere viktige hensyn. Tagger definerer hvilke verdier som skal skisseres i trestrukturen og bidra til å bygge den. Evnen til å lese og skrive til en XML kan tilrettelegges ved smart strukturering. Foreldre-forholdet må alltid vises i åpnings- og lukkingsbrakettene på tagger. Når du validerer tagger eller gir mulighet for boolske betegnelser, gir attributter ytterligere instruksjoner.