Menguasai Parsing XML di Python: Panduan Praktis Menggunakan Minidom dan ElementTree
Apa itu XML?
XML, atau eXtensible Markup Language, dibuat untuk menyimpan dan mentransportir data terstruktur secara efisien. Ia banyak digunakan untuk bertukar informasi antara sistem dan aplikasi.
Python menyediakan perpustakaan yang kuat untuk parsing dan manipulasi dokumen XML. Namun, untuk memparsing file XML, seluruh dokumen harus dimuat ke dalam memori terlebih dahulu. Dalam tutorial ini kita akan demonstrasi cara menggunakan modul xml.dom.minidom dan xml.etree.ElementTree Python untuk membaca, memeriksa, dan memodifikasi file XML.
Pada akhir panduan ini Anda akan dapat:
Melakukan parsing XML dengan minidom
Membuat node XML baru
Melakukan parsing XML dengan ElementTree
Melakukan Parsing XML dengan minidom
Kita akan mulai dengan file XML contoh yang berisi data karyawan. File terlihat seperti ini:
Langkah 1) File mencantumkan nama depan karyawan, nama belakang, rumah, dan area keahlian seperti SQL, Python, Testing, dan Bisnis.
Langkah 2) Setelah memuat dokumen, kita akan mencetak nodeName elemen root dan tagName anak pertama. Ini adalah properti standar dari objek DOM.
Impor xml.dom.minidom dan muat file XML (myxml.xml).
Lakukan parsing file dengan parse() untuk mendapatkan objek dokumen.
Ambil dan tampilkan nodeName dokumen dan tagName anak pertama.
Gunakan getElementsByTagName() untuk mencantumkan semua elemen expertise dan cetak setiap keterampilan.
Catatan: Nilai nodeName dan tagName mengikuti konvensi penamaan XML DOM, yang mungkin tidak familiar jika Anda baru dalam XML.
Langkah 3) Kita dapat mengekstrak daftar semua keterampilan dari dokumen. Kode berikut mendemonstrasikan cara mengumpulkan nama keterampilan ke dalam himpunan.
Gunakan getElementsByTagName("skill") untuk mengambil semua elemen keterampilan.
Iterasi melalui daftar yang dikembalikan dan keluarkan setiap atribut name keterampilan.
Membuat Node XML Baru
Menambahkan data baru ke struktur XML yang ada adalah sederhana dengan minidom. Dalam contoh kita, kita akan menambahkan node expertise baru yang ditandai “BigData”.
Buat elemen baru dengan createElement("expertise") dan atur atribut name.
Tambahkan elemen baru ke anak root dokumen.
Setelah disisipkan, daftar expertise sekarang mencakup keterampilan baru “BigData”.
Contoh Parser XML
Contoh Python 2
import xml.dom.minidom def main(): # Muat dan parsing file XML doc = xml.dom.minidom.parse("Myxml.xml") # Keluarkan informasi root print doc.nodeName print doc.firstChild.tagName # Daftar entri keahlian yang ada expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") # Tambahkan entri keahlian baru newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " # Verifikasi penambahan expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if __name__ == "__main__": main()
Contoh Python 3
import xml.dom.minidom def main(): # Muat dan parsing file XML doc = xml.dom.minidom.parse("Myxml.xml") # Keluarkan informasi root print(doc.nodeName) print(doc.firstChild.tagName) # Daftar entri keahlian yang ada expertise = doc.getElementsByTagName("expertise") print("%d expertise:" % expertise.length) for skill in expertise: print(skill.getAttribute("name")) # Tambahkan entri keahlian baru newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print(" ") # Verifikasi penambahan expertise = doc.getElementsByTagName("expertise") print("%d expertise:" % expertise.length) for skill in expertise: print(skill.getAttribute("name")) if __name__ == "__main__": main()
Melakukan Parsing XML dengan ElementTree
ElementTree adalah API ringan yang membuat manipulasi XML sederhana dan Pythonic. Ini ideal untuk membaca file XML besar tanpa biaya overhead DOM penuh.
tree = ET.parse('items.xml') root = tree.getroot()
Berikut adalah kode lengkap untuk menampilkan semua nama keterampilan:
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
Output:
Expertise Data: SQL Python
Ringkasan
Modul xml.dom.minidom dan xml.etree.ElementTree Python memberdayakan pengembang untuk memuat, menganalisis, dan memodifikasi dokumen XML secara efisien. Sementara minidom menyediakan representasi DOM penuh yang cocok untuk manipulasi kompleks, ElementTree menawarkan alternatif ringan untuk parsing dan ekstraksi yang sederhana.
Muat XML dengan parse() (misalnya, doc = xml.dom.minidom.parse(file)).
Gunakan getElementsByTagName() untuk mengambil elemen.
Buat dan tambahkan node baru dengan createElement() dan appendChild().
Dengan ElementTree, cukup ulangi melalui elemen anak untuk mengakses data.