Python XML-fil – Hur man läser, skriver och tolkar

Vad är XML?

XML står för eXtensible Markup Language. Den designades för att lagra och transportera små till medelstora mängder data och används ofta för att dela strukturerad information.

Python gör att du kan analysera och ändra XML-dokument. För att kunna analysera XML-dokument måste du ha hela XML-dokumentet i minnet. I den här handledningen kommer vi att se hur vi kan använda XML minidom-klass i Python för att ladda och analysera XML-filer.

Hur man analyserar XML med minidom

Vi har skapat ett exempel på en XML-fil som vi ska analysera.

Steg 1) Skapa exempel på XML-fil

Inuti filen kan vi se förnamn, efternamn, hem och expertområdet (SQL, Python, Testning och Business)

Hur man analyserar XML med minidom

Steg 2) Använd analysfunktionen för att ladda och analysera XML-filen

När vi har analyserat dokumentet kommer vi att skriva ut "nodnamn" av roten till dokumentet och "firstchild tagname". Tagnamn och nodnamn är standardegenskaperna för XML-filen.

Analysera XML med minidom

  • Importera xml.dom.minidom-modulen och deklarera filen som måste tolkas (myxml.xml)
  • Denna fil innehåller en del grundläggande information om en anställd som förnamn, efternamn, hem, expertis, etc.
  • Vi använder parsefunktionen på XML-minidomen för att ladda och analysera XML-filen
  • Vi har variabel doc och doc får resultatet av parsefunktionen
  • Vi vill skriva ut nodnamnet och det underordnade taggnamnet från filen, så vi deklarerar det i utskriftsfunktionen
  • Kör koden - Den skriver ut nodnamnet (#document) från XML-filen och det första underordnade taggnamnet (anställd) från XML-filen

Anmärkningar:

Nodnamn och underordnat taggnamn är standardnamnen eller egenskaperna för en XML-dom.

Steg 3) Kalla upp listan med XML-taggar från XML-dokumentet och skrivs ut

Därefter kan vi också anropa listan över XML-taggar från XML-dokumentet och skrivas ut. Här skrev vi ut färdigheter som SQL, Python, Testning och Business.

Analysera XML med minidom

  • Deklarera den varierande expertis, från vilken vi kommer att extrahera all expertis namn anställda har
  • Använd dom standardfunktionen som heter "getElementsByTagName"
  • Detta kommer att få alla element som heter skicklighet
  • Deklarera loop över var och en av färdighetstaggarna
  • Kör koden - Det kommer att ge en lista med fyra färdigheter

Hur man skriver XML-nod

Vi kan skapa ett nytt attribut genom att använda funktionen "createElement" och sedan lägga till detta nya attribut eller tag till de befintliga XML-taggarna. Vi har lagt till en ny tagg "BigData" i vår XML-fil.

  1. Du måste koda för att lägga till det nya attributet (BigData) till den befintliga XML-taggen
  2. Sedan måste du skriva ut XML-taggen med nya attribut som läggs till den befintliga XML-taggen

Skriv XML-nod

  • För att lägga till en ny XML och lägga till den i dokumentet använder vi koden "doc.create elements"
  • Denna kod kommer att skapa en ny färdighetstagg för vårt nya attribut "Big-data"
  • Lägg till denna färdighetstagg i dokumentets första underordnade (anställd)
  • Kör koden - den nya taggen "big data" kommer att visas med den andra expertlistan

Exempel på XML-tolk

Python 2 Exempel

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 Exempel

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();

Hur man analyserar XML med ElementTree

ElementTree är ett API för att manipulera XML. ElementTree är det enkla sättet att bearbeta XML-filer.

Vi använder följande XML-dokument som exempeldata:

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

Läser XML med ElementTree:

vi måste först importera xml.etree.ElementTree-modulen.

import xml.etree.ElementTree as ET

Låt oss nu hämta rotelementet:

root = tree.getroot()

Följande är den kompletta koden för att läsa ovanstå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

Sammanfattning

Python gör att du kan analysera hela XML-dokumentet på en gång och inte bara en rad i taget. För att kunna tolka XML-dokument måste du ha hela dokumentet i minnet.

  • För att analysera XML-dokument
  • Importera xml.dom.minidom
  • Använd funktionen "parse" för att analysera dokumentet ( doc=xml.dom.minidom.parse (filnamn);
  • Kalla upp listan över XML-taggar från XML-dokumentet med hjälp av kod (=doc.getElementsByTagName( "namn på xml-taggar")
  • För att skapa och lägga till nytt attribut i XML-dokument
  • Använd funktionen "createElement"