Python XML-fail – kuidas lugeda, kirjutada ja sõeluda
⚡ Nutikas kokkuvõte
Python XML-töötlus võimaldab teil lugeda, kirjutada ja parsida XML-dokumente sisseehitatud minidomi ja ElementTree moodulite abil. Minidomi klass laadib faili mällu DOM-ina, samas kui ElementTree pakub kiiremat ja... Pythonic puu API.
Allolevad jaotised käsitlevad XML-failide parsimist, kirjutamist ja lugemist Python.
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 teil XML-dokumente parsida ja muuta. XML-dokumendi parsimiseks peab teil kogu XML-dokument mälus olema. Selles õpetuses näeme, kuidas saame XML-i minidom-klassi kasutada 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 parsinud, prindime välja dokumendi juurkataloogi „node name“ ja „firstchild tagname“. Tagname ja nodename on XML-faili standardsed omadused.
- Impordi moodul xml.dom.minidom ja deklareeri parsitav fail (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 parsimisfunktsiooni tulemuse.
- Me tahame failist välja 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ärkusedSõlmenimi ja lapse siltnimi on XML-domeeni standardsed nimed või omadused.
3. samm) Kutsuge XML-dokumendist välja XML-siltide loend ja printige see välja
Järgmisena saame XML-dokumendist välja kutsuda ka XML-siltide loendi ja selle välja printida. Siin printisime välja oskuste komplekti, näiteks SQL-i, Python, Testimine ja äri.
- Deklareerime muutuja ekspertiis, millest me välja tuletametrackõik töötaja eksperditeadmiste nimed
- Kasutage standardset funktsiooni dom "getElementsByTagName"
- See annab kõik elemendid nimega oskus
- Kuuluta iga oskussildi kohal tsükkel
- Käivita kood – see annab sulle nimekirja neljast oskusest
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".
- Uue atribuudi (BigData) lisamiseks olemasolevale XML-sildile peate kirjutama koodi.
- Seejärel peate XML-sildi välja printima, lisades olemasolevale XML-sildile uue atribuudi.
- Uue XML-sildi lisamiseks ja dokumendile lisamiseks kasutame koodi „doc.createElement”.
- See kood loob meie uue atribuudi „BigData” jaoks uue oskuste sildi.
- Lisa see oskusmärgis dokumendi esimesse alamobjekti (töötaja)
- Käivita kood – uus silt „BigData” ilmub koos teiste ekspertiiside loendiga.
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 XML-i manipuleerimise API. 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ärgnev 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





