Python XML Parser Tutorial: Citiți exemplu de fișier XML (Minidom, ElementTree)

Cuprins:

Anonim

Ce este XML?

XML înseamnă eXtensible Markup Language. A fost conceput pentru a stoca și transporta cantități mici și medii de date și este utilizat pe scară largă pentru schimbul de informații structurate.

Python vă permite să analizați și să modificați documentul XML. Pentru a analiza documentul XML trebuie să aveți întregul document XML în memorie. În acest tutorial, vom vedea cum putem folosi clasa XML minidom în Python pentru a încărca și analiza fișierul XML.

În acest tutorial, vom învăța-

  • Cum se analizează XML folosind minidom
  • Cum se creează nod XML
  • Cum se analizează XML folosind ElementTree

Cum se analizează XML folosind minidom

Am creat un exemplu de fișier XML pe care îl vom analiza.

Pasul 1) În interiorul fișierului, putem vedea prenumele, prenumele, domiciliul și aria de expertiză (SQL, Python, Testing și Business)

Pasul 2) Odată ce am analizat documentul, vom imprima „numele nodului” rădăcinii documentului și „ numele primului copil” . Tagname și nodename sunt proprietățile standard ale fișierului XML.

  • Importați modulul xml.dom.minidom și declarați fișierul care trebuie analizat (myxml.xml)
  • Acest fișier conține câteva informații de bază despre angajați, cum ar fi prenumele, prenumele, casa, expertiza etc.
  • Folosim funcția de analiză pe minidom XML pentru a încărca și analiza fișierul XML
  • Avem doc variabil și doc obține rezultatul funcției de analiză
  • Vrem să imprimăm numele nodului și numele copilului din fișier, așa că îl declarăm în funcția de imprimare
  • Rulați codul - Tipărește numele nodului (#document) din fișierul XML și primul nume tagname (angajat) din fișierul XML

Notă :

Nodename și child tagname sunt numele standard sau proprietățile unui dom XML. Dacă nu sunteți familiarizați cu acest tip de convenții de denumire.

Pasul 3) De asemenea, putem apela lista de etichete XML din documentul XML și tipărite. Aici am imprimat setul de abilități precum SQL, Python, Testing și Business.

  • Declarați expertiza variabilă, din care vom extrage toată expertiza pe care o are angajatul
  • Utilizați funcția standard dom numită "getElementsByTagName"
  • Aceasta va obține toate elementele numite abilitate
  • Declarați bucla peste fiecare dintre etichetele de calificare
  • Rulați codul - Va da o listă de patru abilități

Cum se creează nod XML

Putem crea un nou atribut folosind funcția „createElement” și apoi adăugăm acest nou atribut sau etichetă la etichetele XML existente. Am adăugat o nouă etichetă „BigData” în fișierul nostru XML.

  1. Trebuie să codificați pentru a adăuga noul atribut (BigData) la eticheta XML existentă
  2. Apoi, trebuie să imprimați eticheta XML cu atribute noi atașate cu eticheta XML existentă
  • Pentru a adăuga un nou XML și a-l adăuga în document, folosim codul „doc.create elements”
  • Acest cod va crea o nouă etichetă de calificare pentru noul nostru atribut „Big-data”
  • Adăugați această etichetă de calificare în primul copil (angajat) al documentului
  • Rulați codul - noua etichetă „big data” va apărea împreună cu cealaltă listă de expertiză

Exemplu de analizor XML

Exemplu Python 2

importați xml.dom.minidomdef main ():# utilizați funcția parse () pentru a încărca și analiza un fișier XMLdoc = xml.dom.minidom.parse („Myxml.xml”);# tipăriți nodul documentului și numele primei etichete copiltipăriți doc.nodeNametipăriți doc.firstChild.tagName# obțineți o listă de etichete XML din document și imprimați fiecareexpertiză = doc.getElementsByTagName („expertiză”)tipăriți "% d expertiză:"% expert.lungimepentru calificare în expertiză:print skill.getAttribute („nume”)# creați o nouă etichetă XML și adăugați-o în documentnewexpertise = doc.createElement („expertiză”)newexpertise.setAttribute ("nume", "BigData")doc.firstChild.appendChild (newexpertise)imprimare " "expertiză = doc.getElementsByTagName („expertiză”)tipăriți "% d expertiză:"% expert.lungimepentru calificare în expertiză:print skill.getAttribute („nume”)if name == "__main__":principal();

Exemplu Python 3

importați xml.dom.minidomdef main ():# utilizați funcția parse () pentru a încărca și analiza un fișier XMLdoc = xml.dom.minidom.parse („Myxml.xml”);# tipăriți nodul documentului și numele primei etichete copilprint (doc.nodeName)print (doc.firstChild.tagName)# obțineți o listă de etichete XML din document și imprimați fiecareexpertiză = doc.getElementsByTagName („expertiză”)print („% d expertiză:„% expert.lungime)pentru calificare în expertiză:print (skill.getAttribute ("nume"))# creați o nouă etichetă XML și adăugați-o în documentnewexpertise = doc.createElement („expertiză”)newexpertise.setAttribute ("nume", "BigData")doc.firstChild.appendChild (newexpertise)imprimare (" ")expertiză = doc.getElementsByTagName („expertiză”)print („% d expertiză:„% expert.lungime)pentru calificare în expertiză:print (skill.getAttribute ("nume"))dacă __name__ == "__main__":principal();

Cum se analizează XML folosind ElementTree

ElementTree este un API pentru manipularea XML. ElementTree este modalitatea ușoară de a procesa fișiere XML.

Folosim următorul document XML ca exemplu de date:

SQLPython

Citirea XML folosind ElementTree:

trebuie mai întâi să importăm modulul xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Acum, să preluăm elementul rădăcină:

root = tree.getroot()

Următorul este codul complet pentru citirea datelor XML de mai sus

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)
ieșire:
Expertise Data:SQLPython

Rezumat:

Python vă permite să analizați întregul document XML dintr-o dată și nu doar pe o linie la un moment dat. Pentru a analiza documentul XML trebuie să aveți întregul document în memorie.

  • Pentru a analiza documentul XML
    • Importați xml.dom.minidom
    • Utilizați funcția „analizați” pentru a analiza documentul (doc = xml.dom.minidom.parse (numele fișierului);
    • Apelați lista de etichete XML din documentul XML folosind codul (= doc.getElementsByTagName („numele etichetelor XML”)
  • Pentru a crea și a adăuga un atribut nou în documentul XML
    • Utilizați funcția „createElement”