Python XML-fil – hvordan man læser, skriver og analyserer
Hvad er XML?
XML står for eXtensible Markup Language. Det er designet til at gemme og transportere små til mellemstore mængder data og er meget brugt til at dele struktureret information.
Python giver dig mulighed for at parse og ændre XML-dokumenter. For at parse XML-dokument skal du have hele XML-dokumentet i hukommelsen. I denne tutorial vil vi se, hvordan vi kan bruge XML minidom-klassen i Python at indlæse og parse XML-filer.
Sådan parses XML ved hjælp af minidom
Vi har oprettet en eksempel-XML-fil, som vi skal analysere.
Trin 1) Opret prøve XML-fil
Inde i filen kan vi se fornavn, efternavn, hjem og ekspertiseområdet (SQL, Python, test og forretning)
Trin 2) Brug parse-funktionen til at indlæse og parse XML-filen
Når vi har parset dokumentet, vil vi udskrive "node navn" af dokumentets rod og "førstebarns tagnavn". Tagnavn og nodenavn er standardegenskaberne for XML-filen.
- Importer xml.dom.minidom-modulet og erklær en fil, der skal parses (myxml.xml)
- Denne fil indeholder nogle grundlæggende oplysninger om en medarbejder som fornavn, efternavn, hjem, ekspertise osv.
- Vi bruger parse-funktionen på XML-minidom til at indlæse og parse XML-filen
- Vi har variabel doc og doc får resultatet af parse-funktionen
- Vi ønsker at udskrive nodenavnet og det underordnede tagnavn fra filen, så vi erklærer det i printfunktionen
- Kør koden - Den udskriver nodenavnet (#document) fra XML-filen og det første underordnede tagnavn (medarbejder) fra XML-filen
Bemærk:
Nodenavn og underordnet tagnavn er standardnavnene eller egenskaberne for et XML-dom.
Trin 3) Kald listen over XML-tags fra XML-dokumentet og printes ud
Dernæst kan vi også kalde listen over XML-tags fra XML-dokumentet og udskrives. Her udskrev vi sættet af færdigheder som SQL, Python, Test og Business.
- Erklær den variable ekspertise, hvorfra vi vil udtrække al den ekspertise, navnet medarbejder har
- Brug dom standardfunktionen kaldet "getElementsByTagName"
- Dette vil få alle elementerne kaldet færdighed
- Erklær loop over hver enkelt af færdighedsmærkerne
- Kør koden - Det vil give en liste over fire færdigheder
Hvordan man skriver XML Node
Vi kan oprette en ny attribut ved at bruge "createElement"-funktionen og derefter tilføje denne nye attribut eller tag til de eksisterende XML-tags. Vi tilføjede et nyt tag "BigData" i vores XML-fil.
- Du skal kode for at tilføje den nye attribut (BigData) til den eksisterende XML-tag
- Derefter skal du udskrive XML-tagget med nye attributter tilføjet det eksisterende XML-tag
- For at tilføje en ny XML og tilføje den til dokumentet, bruger vi koden "doc.create elements"
- Denne kode vil skabe et nyt færdighedstag til vores nye attribut "Big-data"
- Tilføj dette færdighedstag til dokumentets første barn (medarbejder)
- Kør koden - det nye tag "big data" vises sammen med den anden liste over ekspertise
Eksempel på XML-parser
Python 2 Eksempel
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 Eksempel
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();
Sådan parses XML ved hjælp af ElementTree
ElementTree er et API til at manipulere XML. ElementTree er den nemme måde at behandle XML-filer på.
Vi bruger følgende XML-dokument som eksempeldata:
<data>
<items>
<item name="expertise1">SQL</item>
<item name="expertise2">Python</item>
</items>
</data>
Læsning af XML ved hjælp af ElementTree:
vi skal først importere xml.etree.ElementTree-modulet.
import xml.etree.ElementTree as ET
Lad os nu hente rodelementet:
root = tree.getroot()
Følgende er den komplette kode til at læse ovenstående xml-data
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)
produktion:
Expertise Data: SQL Python
Resumé
Python giver dig mulighed for at parse hele XML-dokumentet på én gang og ikke kun én linje ad gangen. For at parse XML-dokument skal du have hele dokumentet i hukommelsen.
- For at parse XML-dokument
- Importer xml.dom.minidom
- Brug funktionen "parse" til at parse dokumentet ( doc=xml.dom.minidom.parse (filnavn);
- Kald listen over XML-tags fra XML-dokumentet ved hjælp af kode (=doc.getElementsByTagName( "navn på xml-tags")
- For at oprette og tilføje ny attribut i XML-dokument
- Brug funktionen "createElement"




