Python XML datoteka – Kako čitati, pisati i analizirati

Što je XML?

XML je kratica za eXtensible Markup Language. Dizajniran je za pohranu i prijenos malih do srednjih količina podataka i naširoko se koristi za dijeljenje strukturiranih informacija.

Python omogućuje analizu i izmjenu XML dokumenata. Kako biste raščlanili XML dokument, morate imati cijeli XML dokument u memoriji. U ovom vodiču ćemo vidjeti kako možemo koristiti XML minidom klasu u Python za učitavanje i raščlanjivanje XML datoteka.

Kako analizirati XML pomoću minidoma

Napravili smo primjer XML datoteke koju ćemo raščlaniti.

Korak 1) Stvorite oglednu XML datoteku

Unutar datoteke možemo vidjeti ime, prezime, dom i područje stručnosti (SQL, Python, testiranje i poslovanje)

Kako analizirati XML pomoću minidoma

Korak 2) Koristite funkciju raščlanjivanja za učitavanje i raščlanjivanje XML datoteke

Nakon što raščlanimo dokument, ispisat ćemo "ime čvora" korijena dokumenta i "naziv oznake prvog djeteta”. Naziv oznake i naziv čvora standardna su svojstva XML datoteke.

Raščlanite XML pomoću minidoma

  • Uvezite modul xml.dom.minidom i deklarirajte datoteku koja se mora analizirati (myxml.xml)
  • Ova datoteka sadrži neke osnovne podatke o zaposleniku kao što su ime, prezime, dom, stručnost itd.
  • Koristimo funkciju raščlanjivanja na XML minidomu za učitavanje i raščlanjivanje XML datoteke
  • Imamo varijablu doc ​​i doc dobiva rezultat funkcije parse
  • Želimo ispisati naziv čvora i podređeni tagname iz datoteke, pa ga deklariramo u funkciji ispisa
  • Pokrenite kod - ispisuje naziv čvora (#document) iz XML datoteke i prvi podređeni tagname (zaposlenik) iz XML datoteke

bilješke:

Ime čvora i podređeno ime standardna su imena ili svojstva XML doma.

Korak 3) Pozovite popis XML oznaka iz XML dokumenta i ispišite ga

Dalje, također možemo pozvati popis XML oznaka iz XML dokumenta i ispisati ga. Ovdje smo ispisali skup vještina kao što je SQL, Python, Ispitivanje i Posao.

Raščlanite XML pomoću minidoma

  • Deklarirajte varijablu stručnost iz koje ćemo izdvojiti svu stručnost koju zaposlenik ima
  • Koristite dom standardnu ​​funkciju pod nazivom "getElementsByTagName"
  • Time ćete dobiti sve elemente pod nazivom skill
  • Deklarirajte petlju preko svake od oznaka vještina
  • Pokrenite kod - to će dati popis od četiri vještine

Kako napisati XML čvor

Možemo stvoriti novi atribut pomoću funkcije "createElement" i zatim dodati ovaj novi atribut ili oznaku postojećim XML oznakama. Dodali smo novu oznaku "BigData" u našu XML datoteku.

  1. Morate kodirati da biste dodali novi atribut (BigData) postojećoj XML oznaci
  2. Zatim morate ispisati XML oznaku s novim atributima dodanim uz postojeću XML oznaku

Napišite XML čvor

  • Da bismo dodali novi XML i dodali ga u dokument, koristimo kod “doc.create elements”
  • Ovaj kod će stvoriti novu oznaku vještine za naš novi atribut "Big-data"
  • Dodajte ovu oznaku vještine u prvi podređeni dokument (zaposlenik)
  • Pokrenite kod - nova oznaka "veliki podaci" pojavit će se s drugim popisom stručnosti

Primjer XML parsera

Python 2 Primjer

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 Primjer

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();

Kako analizirati XML pomoću ElementTree

ElementTree je API za manipuliranje XML-om. ElementTree je jednostavan način za obradu XML datoteka.

Kao uzorak podataka koristimo sljedeći XML dokument:

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

Čitanje XML-a pomoću ElementTree:

prvo moramo uvesti modul xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Sada dohvatimo korijenski element:

root = tree.getroot()

Slijedi potpuni kod za čitanje gornjih xml podataka

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)

izlaz:

Expertise Data:
SQL
Python

Rezime

Python omogućuje raščlanjivanje cijelog XML dokumenta odjednom, a ne samo jedan redak odjednom. Kako biste analizirali XML dokument morate imati cijeli dokument u memoriji.

  • Za analizu XML dokumenta
  • Uvezi xml.dom.minidom
  • Koristite funkciju “parse” za analizu dokumenta ( doc=xml.dom.minidom.parse (naziv datoteke);
  • Pozovite popis XML oznaka iz XML dokumenta pomoću koda (=doc.getElementsByTagName( “naziv xml oznaka”)
  • Za stvaranje i dodavanje novog atributa u XML dokument
  • Koristite funkciju “createElement”

Dnevni bilten Guru99

Započnite dan s najnovijim i najvažnijim vijestima o umjetnoj inteligenciji koje vam donosimo upravo sada.