Persistensi Data Python - Pengurai XML

XML adalah singkatan dari eXtensible Markup Language. Ini adalah bahasa portabel, open source, dan lintas platform yang sangat mirip dengan HTML atau SGML dan direkomendasikan oleh World Wide Web Consortium.

Ini adalah format pertukaran data yang terkenal, digunakan oleh banyak aplikasi seperti layanan web, peralatan kantor, dan Service Oriented Architectures(SOA). Format XML dapat dibaca oleh mesin dan manusia.

Paket xml pustaka Python standar terdiri dari modul-modul berikut untuk pemrosesan XML -

Sr.No. Modul & Deskripsi
1

xml.etree.ElementTree

ElementTree API, prosesor XML yang sederhana dan ringan

2

xml.dom

definisi DOM API

3

xml.dom.minidom

implementasi DOM minimal

4

xml.sax

Implementasi antarmuka SAX2

5

xml.parsers.expat

pengikat parser Expat

Data dalam dokumen XML disusun dalam format hierarki seperti pohon, dimulai dengan root dan elemen. Setiap elemen adalah satu node di pohon dan memiliki atribut yang diapit dalam tag <> dan </>. Satu atau lebih sub-elemen dapat ditugaskan ke setiap elemen.

Berikut adalah contoh umum dari dokumen XML -

<?xml version = "1.0" encoding = "iso-8859-1"?>
<studentlist>
   <student>
      <name>Ratna</name>
      <subject>Physics</subject>
      <marks>85</marks>
   </student>
   <student>
      <name>Kiran</name>
      <subject>Maths</subject>
      <marks>100</marks>
   </student>
   <student>
      <name>Mohit</name>
      <subject>Biology</subject>
      <marks>92</marks>
   </student>
</studentlist>

Saat menggunakan ElementTreemodul, langkah pertama adalah menyiapkan elemen root dari pohon. Setiap Elemen memiliki tag dan atribut yang merupakan objek dict. Untuk elemen root, attrib adalah kamus kosong.

import xml.etree.ElementTree as xmlobj
root=xmlobj.Element('studentList')

Sekarang, kita dapat menambahkan satu atau lebih elemen di bawah elemen root. Setiap objek elemen mungkin memilikiSubElements. Setiap subelemen memiliki atribut dan properti teks.

student=xmlobj.Element('student')
   nm=xmlobj.SubElement(student, 'name')
   nm.text='name'
   subject=xmlobj.SubElement(student, 'subject')
   nm.text='Ratna'
   subject.text='Physics'
   marks=xmlobj.SubElement(student, 'marks')
   marks.text='85'

Elemen baru ini ditambahkan ke root menggunakan metode append ().

root.append(student)

Tambahkan elemen sebanyak yang diinginkan menggunakan metode di atas. Akhirnya, objek elemen root ditulis ke sebuah file.

tree = xmlobj.ElementTree(root)
   file = open('studentlist.xml','wb')
   tree.write(file)
   file.close()

Sekarang, kita melihat bagaimana mengurai file XML. Untuk itu, buatlah pohon dokumen yang diberi nama sebagai parameter file pada konstruktor ElementTree.

tree = xmlobj.ElementTree(file='studentlist.xml')

Objek pohon memiliki getroot() metode untuk mendapatkan elemen root dan getchildren () mengembalikan daftar elemen di bawahnya.

root = tree.getroot()
children = root.getchildren()

Objek kamus yang sesuai dengan setiap sub elemen dibangun dengan melakukan iterasi pada kumpulan sub-elemen dari setiap simpul anak.

for child in children:
   student={}
   pairs = child.getchildren()
   for pair in pairs:
      product[pair.tag]=pair.text

Setiap kamus kemudian ditambahkan ke daftar yang mengembalikan daftar asli objek kamus.

SAXadalah antarmuka standar untuk penguraian XML berbasis peristiwa. Parsing XML dengan SAX membutuhkan ContentHandler dengan membuat subclass xml.sax.ContentHandler. Anda mendaftarkan callback untuk acara yang diminati dan kemudian, biarkan pengurai melanjutkan melalui dokumen.

SAX berguna ketika dokumen Anda besar atau Anda memiliki keterbatasan memori karena mengurai file saat membacanya dari disk sebagai akibatnya seluruh file tidak pernah disimpan di memori.

Model Objek Dokumen

(DOM) API adalah rekomendasi World Wide Web Consortium. Dalam hal ini, seluruh file dibaca ke dalam memori dan disimpan dalam bentuk hierarki (berbasis pohon) untuk mewakili semua fitur dokumen XML.

SAX, tidak secepat DOM, dengan file besar. Di sisi lain, DOM dapat mematikan sumber daya, jika digunakan pada banyak file kecil. SAX bersifat read-only, sedangkan DOM memungkinkan perubahan pada file XML.