Vad är XML?
XML står för eXtensible Markup Language. Den var utformad för att lagra och transportera små till medelstora mängder data och används ofta för att dela strukturerad information.
Med Python kan du analysera och ändra XML-dokument. För att 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-fil.
I den här handledningen lär vi oss-
- Hur man analyserar XML med minidom
- Hur man skapar XML-nod
- Hur man analyserar XML med ElementTree
Hur man analyserar XML med minidom
Vi har skapat ett exempel på en XML-fil som vi ska analysera.
Steg 1) Inne i filen kan vi se förnamn, efternamn, hem och expertområde (SQL, Python, Testing och Business)
Steg 2) När vi har analyserat dokumentet kommer vi att skriva ut "nodnamnet" på dokumentets rot och "första barnets tagnamn" . Tagnamn och nodenamn är standardegenskaperna för XML-filen.
- Importera xml.dom.minidom-modulen och deklarera filen som måste analyseras (myxml.xml)
- Den här filen innehåller grundläggande information om anställd som förnamn, efternamn, hem, expertis etc.
- Vi använder analyseringsfunktionen på XML-minidomen för att ladda och analysera XML-filen
- Vi har variabel doc och doc får resultatet av analyseringsfunktionen
- Vi vill skriva ut nodenamnet och barnets tagnamn från filen, så vi förklarar det i utskriftsfunktionen
- Kör koden - Den skriver ut nodenamnet (#document) från XML-filen och det första underordnade tagnamnet (anställd) från XML-filen
Obs :
Nodenamn och underordnat namn är standardnamnen eller egenskaperna för en XML-dom. Om du inte känner till den här typen av namngivningskonventioner.
Steg 3) Vi kan också ringa listan över XML-taggar från XML-dokumentet och skrivas ut. Här skrev vi ut en uppsättning färdigheter som SQL, Python, Testing och Business.
- Förklara den variabla expertis, från vilken vi kommer att utvinna alla de expertisnamn anställda har
- Använd dom-standardfunktionen som heter "getElementsByTagName"
- Detta kommer att få alla element som heter skicklighet
- Förklara slinga över var och en av skicklighetstaggarna
- Kör koden - Det kommer att ge en lista över fyra färdigheter
Hur man skapar XML-nod
Vi kan skapa ett nytt attribut genom att använda "createElement" -funktionen och sedan lägga till det nya attributet eller taggen till de befintliga XML-taggarna. Vi lade till en ny tagg "BigData" i vår XML-fil.
- Du måste koda för att lägga till det nya attributet (BigData) till den befintliga XML-taggen
- Då måste du skriva ut XML-taggen med nya attribut bifogade med befintlig XML-tagg
- För att lägga till en ny XML och lägga till den i dokumentet använder vi koden "doc.create elements"
- Den här koden skapar en ny skicklighetstagg för vårt nya attribut "Big-data"
- Lägg till den här färdighetstaggen i dokumentets första barn (anställd)
- Kör koden - den nya taggen "big data" kommer att visas med den andra listan över expertis
XML-analyserarexempel
Python 2 Exempel
importera xml.dom.minidomdef huvud ():# använd parse () -funktionen för att ladda och analysera en XML-fildoc = xml.dom.minidom.parse ("Myxml.xml");# skriv ut dokumentnoden och namnet på den första underordnade taggenskriv ut doc.nodeNameskriv ut doc.firstChild.tagName# få en lista med XML-taggar från dokumentet och skriv ut var och enexpertis = doc.getElementsByTagName ("expertis")skriva ut "% d expertis:"% expertise.lengthför skicklighet i expertis:skriv ut skill.getAttribute ("namn")# skapa en ny XML-tagg och lägg till den i dokumentetnewexpertise = doc.createElement ("expertis")newexpertise.setAttribute ("namn", "BigData")doc.firstChild.appendChild (newexpertise)skriva ut ""expertis = doc.getElementsByTagName ("expertis")skriva ut "% d expertis:"% expertise.lengthför skicklighet i expertis:skriv ut skill.getAttribute ("namn")if name == "__main__":huvud ();
Python 3 Exempel
importera xml.dom.minidomdef huvud ():# använd parse () -funktionen för att ladda och analysera en XML-fildoc = xml.dom.minidom.parse ("Myxml.xml");# skriv ut dokumentnoden och namnet på den första underordnade taggenskriva ut (doc.nodeName)skriva ut (doc.firstChild.tagName)# få en lista med XML-taggar från dokumentet och skriv ut var och enexpertis = doc.getElementsByTagName ("expertis")print ("% d expertis:"% expertise.length)för skicklighet i expertis:skriva ut (skill.getAttribute ("namn"))# skapa en ny XML-tagg och lägg till den i dokumentetnewexpertise = doc.createElement ("expertis")newexpertise.setAttribute ("namn", "BigData")doc.firstChild.appendChild (newexpertise)skriva ut ("")expertis = doc.getElementsByTagName ("expertis")print ("% d expertis:"% expertise.length)för skicklighet i expertis:skriva ut (skill.getAttribute ("namn"))om __name__ == "__main__":huvud ();
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:
- SQL
- Python
Läser XML med ElementTree:
vi måste först importera modulen xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Låt oss nu hämta rotelementet:
root = tree.getroot()
Följande är den fullständiga koden för att läsa ovan xml-data
import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)produktion:
Expertise Data:SQLPython
Sammanfattning:
Med Python kan du analysera hela XML-dokumentet på en gång och inte bara en rad i taget. För att analysera XML-dokument måste du ha hela dokumentet i minnet.
- Att analysera XML-dokument
- Importera xml.dom.minidom
- Använd funktionen "analysera" för att analysera dokumentet (doc = xml.dom.minidom.parse (filnamn);
- Ring listan över XML-taggar från XML-dokumentet med hjälp av kod (= doc.getElementsByTagName ("namnet på xml-taggar")
- Att skapa och lägga till nytt attribut i XML-dokument
- Använd funktionen "createElement"