Python Fișier XML – Cum se citește, se scrie și se analizează

⚡ Rezumat inteligent

Python Procesarea XML vă permite să citiți, să scrieți și să analizați documente XML utilizând modulele minidom și ElementTree încorporate. Clasa minidom încarcă un fișier în memorie ca DOM, în timp ce ElementTree oferă o modalitate mai rapidă și mai... PythonAPI-ul arborelui ic.

  • 🔘 Ce este XML: Limbajul de marcare extensibil stochează și transportă date structurate de mici dimensiuni.
  • ☑️ analiză minidom: Funcția parse() încarcă un fișier XML în memorie ca DOM.
  • Citirea etichetelor: getElementsByTagName() returnează elementele corespunzătoare; getAttribute() citește valorile acestora.
  • 🧪 Noduri de scriere: createElement() și appendChild() adaugă o nouă etichetă unui document.
  • 🛠️ API-ul ElementTree: ET.parse() construiește un arbore; getroot() returnează elementul rădăcină.
  • 🤖 Pregătit pentru inteligența artificială: XML-ul analizat introduce configurații și date API în conductele de învățare automată.

Python Fișier XML

Secțiunile de mai jos acoperă analiza, scrierea și citirea fișierelor XML în Python.

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 un document XML, trebuie să aveți întregul document XML în memorie. În acest tutorial, vom vedea cum putem utiliza 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).

Cum să analizați XML folosind minidom

Pasul 2) Utilizați funcția de analiză pentru a încărca și analiza fișierul XML

După ce am analizat documentul, vom afișa „numele nodului” din rădăcina documentului și „firstchild tagname”. Tagname și nodename sunt proprietățile standard ale fișierului XML.

Analizați XML folosind minidom

  • 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 o variabilă doc, iar doc obține rezultatul funcției de analiză
  • Vrem să imprimăm numele nodului și numele tag-ului copilului 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țeNumele nodului și numele tagului copilului sunt numele sau proprietățile standard ale unui dom XML.

Pasul 3) Apelați lista de etichete XML din documentul XML și afișați-o

Apoi, putem apela și lista de etichete XML din documentul XML și o putem afișa. Aici am afișat setul de competențe precum SQL, Python, Testarea și Afaceri.

Analizați XML folosind minidom

  • Declarăm variabila expertiză, din care vom exprimatractoate denumirile de expertiză pe care le are angajatul
  • Utilizați funcția standard dom numită „getElementsByTagName”
  • Acest lucru va obține toate elementele numite abilitate
  • Declară o buclă peste fiecare dintre etichetele de abilitate
  • 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.

  1. Trebuie să scrieți cod pentru a adăuga noul atribut (BigData) la eticheta XML existentă.
  2. Apoi, trebuie să imprimați eticheta XML cu noul atribut adăugat la eticheta XML existentă.

Scrieți XML Node

  • Pentru a adăuga o nouă etichetă XML și a o adăuga la document, folosim codul „doc.createElement”
  • Acest cod va crea o nouă etichetă de abilitate pentru noul nostru atribut „BigData”.
  • Adaugă această etichetă de competență în primul copil al documentului (angajat)
  • Rulați codul - noua etichetă „BigData” 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 o interfață de programare (API) pentru manipularea XML. ElementTree este o modalitate ușoară de a procesa fișiere 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:

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

import xml.etree.ElementTree as ET

Acum să preluă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

Întrebări frecvente

Folosește minidom pentru fișiere mici care necesită navigare în DOM. Alege ElementTree pentru majoritatea lucrărilor — este mai rapid, mai ușor și cel recomandat, mai... PythonIC implicit.

Încadrați rădăcina într-un ElementTree și apelați tree.write(„out.xml”, encoding=”utf-8″, xml_declaration=True). Pentru indentare, folosiți ET.indent() pe Python 3.9+ sau pretty_print-ul din lxml.

lxml este o bibliotecă terță parte care partajează API-ul ElementTree, dar este susținută de cod C rapid. Adaugă XPath, XSLT și validare. Se instalează prin pip install lxml.

Parserele standard sunt vulnerabile la atacurile XXE și billion-laughs. Instalați defusedxml și importați defusedxml.ElementTree — un înlocuitor drop-in care dezactivează entitățile externe periculoase.

Da. Folosește minidom.parseString(text) sau ET.fromstring(text) din ElementTree, care returnează direct rădăcina. Ambele analizează XML dintr-o variabilă, deci nu este nevoie ca răspunsurile să fie salvate mai întâi.

Parcurge arborele cu ElementTree, construind un dict din eticheta, atributele și textul fiecărui element. Biblioteca xmltodict automatizează conversia prin xmltodict.parse().

XML stochează configurații, adnotări și răspunsuri API care alimentează modelele. Etichetele de imagine VOC din Pascal sunt livrate ca XML; ElementTree extraccutiile lor delimitătoare pentru antrenament.

Da. GitHub Copilot completează automat modelele minidom și ElementTree, cum ar fi buclele parse() și findall(). Verifică în continuare numele etichetelor și codificările și adaugă defusedxml pentru intrări nesigure.

Rezumați această postare cu: