Python XML fájl – Olvasás, írás és elemzés

Mi az XML?

Az XML az eXtensible Markup Language rövidítése. Kis és közepes mennyiségű adat tárolására és szállítására tervezték, és széles körben használják strukturált információk megosztására.

Python lehetővé teszi az XML dokumentumok elemzését és módosítását. Az XML-dokumentum elemzéséhez a teljes XML-dokumentumnak a memóriában kell lennie. Ebben az oktatóanyagban látni fogjuk, hogyan használhatjuk az XML minidom osztályt Python XML fájlok betöltéséhez és elemzéséhez.

XML elemzése minidom segítségével

Létrehoztunk egy minta XML fájlt, amelyet elemezni fogunk.

1. lépés) Hozzon létre minta XML-fájlt

A fájlon belül láthatjuk a keresztnevet, a vezetéknevet, az otthont és a szakterületet (SQL, Python, tesztelés és üzlet)

XML elemzése minidom segítségével

2. lépés) Használja az elemzés funkciót az XML fájl betöltéséhez és elemzéséhez

A dokumentum elemzése után kinyomtatjuk a "csomópont neve" a dokumentum gyökeréből és a „első gyermek címkenév”. A címkenév és a csomópontnév az XML-fájl szabványos tulajdonságai.

Az XML elemzése minidom segítségével

  • Importálja az xml.dom.minidom modult, és deklarálja az elemezni kívánt fájlt (myxml.xml)
  • Ez a fájl néhány alapvető információt tartalmaz egy alkalmazottról, például keresztnév, vezetéknév, otthon, szakértelem stb.
  • Az XML minidom elemző funkcióját használjuk az XML fájl betöltésére és elemzésére
  • Van doc változónk, és a doc megkapja a parse függvény eredményét
  • A csomópontnevet és a gyermek tagnevet szeretnénk kinyomtatni a fájlból, ezért deklaráljuk a print függvényben
  • Futtassa a kódot – Kiírja a csomópontnevet (#document) az XML fájlból és az első gyermek címkenevet (alkalmazott) az XML fájlból

Megjegyzések:

A csomópontnév és a gyermek címkenév az XML dom szabványos nevei vagy tulajdonságai.

3. lépés) Hívja elő az XML címkék listáját az XML dokumentumból, és nyomtassa ki

Ezután az XML címkék listáját is meghívhatjuk az XML dokumentumból és kinyomtatjuk. Itt kinyomtattuk az olyan készségkészletet, mint az SQL, Python, Tesztelés és Üzleti.

Az XML elemzése minidom segítségével

  • Deklaráljuk azt a változó szakértelmet, amelyből kivonjuk az alkalmazott összes szakértelmét
  • Használja a „getElementsByTagName” nevű szabványos dom függvényt
  • Ez megkapja az összes skill nevű elemet
  • Declaráld a hurkot az egyes készségcímkék felett
  • Futtassa a kódot – négy készség listát ad

Hogyan írjunk XML csomópontot

Létrehozhatunk egy új attribútumot a „createElement” függvénnyel, majd ezt az új attribútumot vagy címkét hozzáfűzhetjük a meglévő XML címkékhez. Új „BigData” címkét adtunk az XML-fájlunkhoz.

  1. Kódolnia kell az új attribútum (BigData) hozzáadásához a meglévő XML-címkéhez
  2. Ezután ki kell nyomtatnia az XML címkét új attribútumokkal, amelyek hozzá vannak fűzve a meglévő XML címkéhez

XML Node írása

  • Új XML hozzáadásához és a dokumentumhoz való hozzáadásához a „doc.create elements” kódot használjuk.
  • Ez a kód új készségcímkét hoz létre az új „Big-data” attribútumhoz.
  • Adja hozzá ezt a készségcímkét a dokumentum első gyermekéhez (alkalmazott)
  • Futtassa a kódot – az új „big data” címke jelenik meg a szakértelem másik listájával együtt

XML-elemző példa

Python 2 Példa

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 Példa

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 elemzése az ElementTree segítségével

Az ElementTree egy API az XML manipulálására. Az ElementTree az XML-fájlok egyszerű feldolgozásának módja.

Mintaadatként a következő XML dokumentumot használjuk:

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

XML olvasása az ElementTree segítségével:

először importálni kell az xml.etree.ElementTree modult.

import xml.etree.ElementTree as ET

Most vegyük le a gyökérelemet:

root = tree.getroot()

Az alábbiakban látható a teljes kód a fenti xml adatok olvasásához

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)

kimenet:

Expertise Data:
SQL
Python

Összegzésként

Python lehetővé teszi a teljes XML dokumentum elemzését egyszerre, nem csak egy sort. Az XML-dokumentum elemzéséhez a teljes dokumentumnak a memóriában kell lennie.

  • XML dokumentum elemzéséhez
  • Importálja az xml.dom.minidomot
  • Használja a „parse” függvényt a dokumentum elemzéséhez ( doc=xml.dom.minidom.parse (fájlnév);
  • Hívja meg az XML-címkék listáját az XML-dokumentumból kóddal (=doc.getElementsByTagName(“xml-címkék neve”)
  • Új attribútum létrehozása és hozzáadása XML dokumentumban
  • Használja a "createElement" függvényt