Python Soubor XML – Jak číst, zapisovat a analyzovat

Co je XML?

XML je zkratka pro eXtensible Markup Language. Byl navržen pro ukládání a přenos malého až středního množství dat a je široce používán pro sdílení strukturovaných informací.

Python umožňuje analyzovat a upravovat dokumenty XML. Abyste mohli analyzovat dokument XML, musíte mít celý dokument XML v paměti. V tomto tutoriálu uvidíme, jak můžeme použít třídu minidom XML v Python k načtení a analýze souborů XML.

Jak analyzovat XML pomocí minidomu

Vytvořili jsme vzorový soubor XML, který se chystáme analyzovat.

Krok 1) Vytvořte ukázkový soubor XML

Uvnitř souboru můžeme vidět jméno, příjmení, domov a oblast odbornosti (SQL, Python, testování a podnikání)

Jak analyzovat XML pomocí minidomu

Krok 2) Pomocí funkce parse načtěte a analyzujte soubor XML

Jakmile dokument analyzujeme, vytiskneme jej "název uzlu" kořenového adresáře dokumentu a „jméno prvního dítěte“. Tagname a nodename jsou standardní vlastnosti souboru XML.

Analyzujte XML pomocí minidomu

  • Importujte modul xml.dom.minidom a deklarujte soubor, který je třeba analyzovat (myxml.xml)
  • Tento soubor obsahuje některé základní informace o zaměstnanci, jako je jméno, příjmení, domov, odbornost atd.
  • K načtení a analýze souboru XML používáme funkci parse na minidomu XML
  • Máme proměnnou doc ​​a doc získá výsledek funkce parse
  • Chceme ze souboru vytisknout název uzlu a podřízený tagname, takže je deklarujeme ve funkci tisku
  • Spusťte kód – vytiskne název uzlu (#document) ze souboru XML a první podřízený tagname (zaměstnanec) ze souboru XML

Pozor:

Název uzlu a podřízený tagname jsou standardní názvy nebo vlastnosti XML dom.

Krok 3) Vyvolejte seznam XML tagů z XML dokumentu a vytiskněte jej

Dále můžeme také zavolat seznam XML tagů z XML dokumentu a vytisknout. Zde jsme vytiskli sadu dovedností, jako je SQL, Python, Testování a podnikání.

Analyzujte XML pomocí minidomu

  • Deklarujte proměnnou odbornost, ze které vytáhneme veškerou odbornost, kterou zaměstnanec má
  • Použijte standardní funkci dom s názvem „getElementsByTagName“
  • Tím získáte všechny prvky s názvem skill
  • Deklarujte smyčku přes každý ze štítků dovedností
  • Spusťte kód – zobrazí seznam čtyř dovedností

Jak napsat uzel XML

Můžeme vytvořit nový atribut pomocí funkce „createElement“ a poté tento nový atribut nebo značku připojit ke stávajícím značkám XML. Do našeho XML souboru jsme přidali nový tag „BigData“.

  1. Chcete-li přidat nový atribut (BigData) do existující značky XML, musíte kódovat
  2. Poté musíte vytisknout značku XML s novými atributy připojenými ke stávající značce XML

Napište XML Node

  • Pro přidání nového XML a jeho přidání do dokumentu používáme kód „doc.create elements“
  • Tento kód vytvoří novou dovednostní značku pro náš nový atribut „Big-data“
  • Přidejte tuto dovednostní značku do dokumentu první dítě (zaměstnanec)
  • Spusťte kód – objeví se nová značka „big data“ s dalším seznamem odborných znalostí

Příklad analyzátoru XML

Python 2 Příklad

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 Příklad

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

Jak analyzovat XML pomocí ElementTree

ElementTree je API pro manipulaci s XML. ElementTree představuje snadný způsob zpracování souborů XML.

Jako vzorová data používáme následující dokument XML:

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

Čtení XML pomocí ElementTree:

musíme nejprve importovat modul xml.etree.ElementTree.

import xml.etree.ElementTree as ET

Nyní načteme kořenový prvek:

root = tree.getroot()

Následuje úplný kód pro čtení výše uvedených dat xml

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)

výstup:

Expertise Data:
SQL
Python

Shrnutí

Python umožňuje analyzovat celý dokument XML najednou a ne pouze jeden řádek najednou. Abyste mohli analyzovat dokument XML, musíte mít celý dokument v paměti.

  • Chcete-li analyzovat dokument XML
  • Importovat xml.dom.minidom
  • K analýze dokumentu použijte funkci „parse“ ( doc=xml.dom.minidom.parse (název souboru);
  • Vyvolejte seznam značek XML z dokumentu XML pomocí kódu (=doc.getElementsByTagName( “název xml značek”)
  • Chcete-li vytvořit a přidat nový atribut v dokumentu XML
  • Použijte funkci „createElement“