Python Fișier XML – Cum se citește, se scrie și se analizează
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 partajarea informațiilor structurate.
Python vă permite să analizați și să modificați documente XML. Pentru a analiza documentul XML, trebuie să aveți în memorie întregul document XML. În acest tutorial, vom vedea cum putem folosi clasa XML minidom în Python pentru a încărca și analiza fișiere XML.
Cum să analizați XML folosind minidom
Am creat un exemplu de fișier XML pe care îl vom analiza.
Pasul 1) Creați exemplu de fișier XML
În interiorul fișierului, putem vedea numele, prenumele, domiciliul și domeniul de expertiză (SQL, Python, Testare și afaceri)
Pasul 2) Utilizați funcția de analiză pentru a încărca și analiza fișierul XML
Odată ce am analizat documentul, vom tipări „numele nodului” din rădăcina documentului și „eticheta primului copil”. Nume etichetă și numele nod 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 un angajat, cum ar fi numele, numele, domiciliul, expertiza etc.
- Folosim funcția de analiză de pe XML minidom pentru a încărca și analiza fișierul XML
- Avem variabila doc și doc obține rezultatul funcției de analiză
- Vrem să tipărim numele nodului și eticheta copil din fișier, așa că le declarăm în funcția de imprimare
- Rulați codul - Tipărește numele nodului (#document) din fișierul XML și primul nume de etichetă copil (angajat) din fișierul XML
notițe:
Nodename și child tagname sunt numele sau proprietățile standard ale unui dom XML.
Pasul 3) Apelați lista de etichete XML din documentul XML și imprimați
În continuare, putem apela și lista de etichete XML din documentul XML și tipărită. Aici am tipărit setul de abilități precum SQL, Python, Testarea și Afaceri.
- Declarați expertiza variabilă, din care vom extrage toată denumirea de expertiză pe care o are angajatul
- Utilizați funcția standard dom numită „getElementsByTagName”
- Acest lucru va obține toate elementele numite abilitate
- Declarați bucla peste fiecare dintre etichetele de calificare
- Rulați codul - Va oferi o listă de patru abilități
Cum se scrie XML Node
Putem crea un nou atribut utilizând funcția „createElement” și apoi adăugați acest nou atribut sau etichetă la etichetele XML existente. Am adăugat o nouă etichetă „BigData” în fișierul nostru XML.
- Trebuie să codificați pentru a adăuga noul atribut (BigData) la eticheta XML existentă
- Apoi, trebuie să imprimați eticheta XML cu atribute noi adăugate etichetei XML existente
- 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 documentul primul copil (angajat)
- Rulați codul - noua etichetă „date mari” va apărea împreună cu cealaltă listă de expertiză
Exemplu de analizator XML
Python 2 Exemplu
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 Exemplu
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();
Cum să analizați XML folosind ElementTree
ElementTree este un API pentru manipularea XML. ElementTree este modalitatea ușoară de procesare a fișierelor XML.
Utilizăm următorul document XML ca exemplu de date:
<data>
<items>
<item name="expertise1">SQL</item>
<item name="expertise2">Python</item>
</items>
</data>
Citirea XML folosind ElementTree:
trebuie mai întâi să importam modulul xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Acum să luăm elementul rădăcină:
root = tree.getroot()
Mai jos este codul complet pentru citirea datelor xml de mai sus
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)
ieșire:
Expertise Data: SQL Python
Rezumat
Python vă permite să analizați întregul document XML dintr-o dată și nu doar o linie la un moment dat. Pentru a analiza documentul XML, trebuie să aveți întregul document în memorie.
- Pentru a analiza documentul XML
- Import xml.dom.minidom
- Utilizați funcția „parse” pentru a analiza documentul ( doc=xml.dom.minidom.parse (nume fișier);
- Apelați lista de etichete XML din documentul XML folosind codul (=doc.getElementsByTagName( „numele etichetelor xml”)
- Pentru a crea și adăuga un nou atribut în documentul XML
- Utilizați funcția „createElement”




