Python XML-fail – kuidas lugeda, kirjutada ja sõeluda

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 XML-dokumente sõeluda ja muuta. XML-dokumendi sõelumiseks peab kogu XML-dokument olema mälus. Selles õpetuses näeme, kuidas saame kasutada XML minidom klassi 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)

XML-i parsimine minidomi abil

2. samm) Kasutage XML-faili laadimiseks ja sõelumiseks parsimisfunktsiooni

Kui oleme dokumendi sõelunud, prindime selle välja "sõlme nimi" dokumendi juure ja "esimese lapse sildinimi". Sildinimi ja sõlmenimi on XML-faili standardsed omadused.

Parsi XML-i minidomi abil

  • Importige moodul xml.dom.minidom ja deklareerige fail, mida tuleb sõeluda (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 sõelumisfunktsiooni tulemuse
  • Soovime failist 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ärkused:

Sõlmenimi ja alamsildinimi on XML-domi standardnimed või omadused.

Samm 3) Kutsuge XML-dokumendist välja XML-märgendite loend ja printige see välja

Järgmisena saame XML-dokumendist välja kutsuda ka XML-märgendite loendi ja välja printida. Siin printisime välja oskuste komplekti, nagu SQL, Python, Testimine ja äri.

Parsi XML-i minidomi abil

  • Deklareerige muutuja ekspertiis, millest võtame välja kõik teadmised, mida töötajal on
  • Kasutage standardset funktsiooni dom "getElementsByTagName"
  • See annab kõik elemendid nimega oskus
  • Deklareerige silmus iga oskuste sildi kohal
  • Käivitage kood - see annab nelja oskuse loendi

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".

  1. Olemasolevale XML-sildile uue atribuudi (BigData) lisamiseks peate kodeerima
  2. Seejärel peate välja printima XML-märgise uute atribuutidega, mis on lisatud olemasolevale XML-sildile

Kirjutage XML-sõlm

  • Uue XML-i lisamiseks ja dokumendile lisamiseks kasutame koodi “doc.create elements”
  • See kood loob meie uuele atribuudile „Big-data” uue oskuste sildi
  • Lisage see oskuste silt dokumendi esimene laps (töötaja)
  • Käivitage kood – koos teiste teadmiste loendiga kuvatakse uus silt „suured andmed”.

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 API XML-i manipuleerimiseks. 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ärgmine 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

kokkuvõte

Python võimaldab sõeluda kogu XML-dokumenti korraga, mitte ainult ühte rida korraga. XML-dokumendi sõelumiseks peab kogu dokument olema mälus.

  • XML-dokumendi sõelumiseks
  • Importige xml.dom.minidom
  • Dokumendi sõelumiseks kasutage funktsiooni "parse" ( doc=xml.dom.minidom.parse (faili nimi);
  • Kutsuge XML-dokumendist XML-märgendite loend, kasutades koodi (=doc.getElementsByTagName("xml-siltide nimi")
  • XML-dokumendis uue atribuudi loomiseks ja lisamiseks
  • Kasutage funktsiooni "createElement"