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
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í.
- 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“