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í)
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.
- 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
Hodnocení:
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í.
- 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“.
- Chcete-li přidat nový atribut (BigData) do existující značky XML, musíte kódovat
- Poté musíte vytisknout značku XML s novými atributy připojenými ke stávající značce XML
- 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“




