Python XML-fail – kuidas lugeda, kirjutada ja sõeluda
Mis on XML?
XML tähistab eXtensible Markup Language. See oli mõeldud väikeste ja keskmiste andmemahtude salvestamiseks ja transportimiseks ning seda kasutatakse laialdaselt struktureeritud teabe jagamiseks.
Python võimaldab XML-dokumente sõeluda ja muuta. XML-dokumendi sõelumiseks peab kogu XML-dokument olema mälus. Selles õpetuses näeme, kuidas saame kasutada XML minidom klassi Python XML-failide laadimiseks ja sõelumiseks.
XML-i parsimine minidomi abil
Oleme loonud XML-i näidisfaili, mida hakkame sõeluma.
Samm 1) Looge XML-i näidisfail
Faili sees näeme eesnime, perekonnanime, kodu ja asjatundlikkust (SQL, Python, testimine ja äri)
2. samm) Kasutage XML-faili laadimiseks ja sõelumiseks parsimisfunktsiooni
Kui oleme dokumendi sõelunud, prindime selle välja "sõlme nimi" dokumendi juure ja "esimese lapse sildinimi". Sildinimi ja sõlmenimi on XML-faili standardsed omadused.
- Importige moodul xml.dom.minidom ja deklareerige fail, mida tuleb sõeluda (myxml.xml)
- See fail sisaldab põhiteavet töötaja kohta, nagu eesnimi, perekonnanimi, kodu, teadmised jne.
- XML-faili laadimiseks ja sõelumiseks kasutame XML-minidomi parsifunktsiooni
- Meil on muutuja doc ja doc saab sõelumisfunktsiooni tulemuse
- Soovime failist printida sõlme nime ja lapse sildi nime, seega deklareerime selle printimisfunktsioonis
- Käivitage kood – see prindib XML-failist välja sõlmenime (#document) ja XML-failist esimese alamsildinime (töötaja)
märkused:
Sõlmenimi ja alamsildinimi on XML-domi standardnimed või omadused.
Samm 3) Kutsuge XML-dokumendist välja XML-märgendite loend ja printige see välja
Järgmisena saame XML-dokumendist välja kutsuda ka XML-märgendite loendi ja välja printida. Siin printisime välja oskuste komplekti, nagu SQL, Python, Testimine ja äri.
- Deklareerige muutuja ekspertiis, millest võtame välja kõik teadmised, mida töötajal on
- Kasutage standardset funktsiooni dom "getElementsByTagName"
- See annab kõik elemendid nimega oskus
- Deklareerige silmus iga oskuste sildi kohal
- Käivitage kood - see annab nelja oskuse loendi
Kuidas kirjutada XML-sõlme
Saame luua uue atribuudi funktsiooni "createElement" abil ja seejärel lisada selle uue atribuudi või sildi olemasolevatele XML-siltidele. Lisasime oma XML-faili uue sildi "BigData".
- Olemasolevale XML-sildile uue atribuudi (BigData) lisamiseks peate kodeerima
- Seejärel peate välja printima XML-märgise uute atribuutidega, mis on lisatud olemasolevale XML-sildile
- Uue XML-i lisamiseks ja dokumendile lisamiseks kasutame koodi “doc.create elements”
- See kood loob meie uuele atribuudile „Big-data” uue oskuste sildi
- Lisage see oskuste silt dokumendi esimene laps (töötaja)
- Käivitage kood – koos teiste teadmiste loendiga kuvatakse uus silt „suured andmed”.
XML-parseri näide
Python 2 Näide
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 Näide
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();
XML-i parsimine ElementTree abil
ElementTree on API XML-i manipuleerimiseks. ElementTree on lihtne viis XML-failide töötlemiseks.
Näidisandmetena kasutame järgmist XML-dokumenti:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
XML-i lugemine ElementTree abil:
esmalt peame importima mooduli xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Nüüd toome juurelemendi:
root = tree.getroot()
Järgmine on täielik kood ülaltoodud xml-andmete lugemiseks
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äljund:
Expertise Data: SQL Python
kokkuvõte
Python võimaldab sõeluda kogu XML-dokumenti korraga, mitte ainult ühte rida korraga. XML-dokumendi sõelumiseks peab kogu dokument olema mälus.
- XML-dokumendi sõelumiseks
- Importige xml.dom.minidom
- Dokumendi sõelumiseks kasutage funktsiooni "parse" ( doc=xml.dom.minidom.parse (faili nimi);
- Kutsuge XML-dokumendist XML-märgendite loend, kasutades koodi (=doc.getElementsByTagName("xml-siltide nimi")
- XML-dokumendis uue atribuudi loomiseks ja lisamiseks
- Kasutage funktsiooni "createElement"