Python - Pemprosesan XML

Halo kepada semua yang ingin menjadi pemrogram! Hari ini, kita akan membahas tentang dunia yang menarik pemprosesan XML dengan Python. Sebagai guru sains komputer yang ramah di atas lorong anda, saya sangat teruja untuk membawa anda melalui perjalanan ini. Jadi, rakamkan rakaman minuman kesukaan anda, dan mari kita mula!

Python - XML Processing

Apa itu XML?

Sebelum kita melompat ke bahagian pengoding, mari kita fahami apa itu XML sebenarnya. XML adalah singkatan bagi eXtensible Markup Language. Ia seperti sepupu kepada HTML, tetapi dengan tujuan yang berbeza. Sementara HTML digunakan untuk paparan data, XML digunakan untuk penyimpanan dan pengangkutan data.

Bayangkan XML sebagai cara untuk menguruskan maklumat dalam struktur seperti rak. Ia menggunakan tag (seperti <tag>) untuk menentukan elemen, serupa dengan cara anda menguruskan fail di atas rak komputer anda.

Di sini adalah contoh ringkas XML:

<bookstore>
<book>
<title>Harry Potter</title>
<author>J.K. Rowling</author>
<year>1997</year>
</book>
</bookstore>

Dalam contoh ini, kita ada sebuah bookstore yang mengandungi maklumat tentang sebuah buku. Buku itu ada judul, pengarang, dan tahun terbit. Mudah bukan?

Arsitektur dan API PARSER XML

Sekarang kita tahu apa itu XML, mari kita bercakap tentang cara kita boleh bekerja dengannya di dalam Python. Python menyediakan beberapa cara untuk mengurai (membaca dan menginterpretasikan) data XML. Tiga pendekatan utama adalah:

  1. SAX (Simple API for XML)
  2. DOM (Document Object Model)
  3. ElementTree

Setiap satu daripada ini memiliki kekuatan dan kesgunaannya sendiri. Mari kita eksplor mereka satu persatu!

Mengurai XML dengan API SAX

SAX, atau Simple API for XML, adalah penyebut yang diurus oleh peristiwa. Ia membaca fail XML secara berurutan dan memicu peristiwa apabila ia menghadapi elemen, atribut, atau teks.

Di sini adalah contoh ringkas penggunaan SAX di dalam Python:

import xml.sax

class BookHandler(xml.sax.ContentHandler):
def startElement(self, name, attrs):
self.current = name
def characters(self, content):
if self.current == "title":
print(f"Judul buku: {content}")

handler = BookHandler()
parser = xml.sax.make_parser()
parser.setContentHandler(handler)
parser.parse("books.xml")

Dalam contoh ini, kita membuat kelas BookHandler yang menentukan apa yang hendak dilakukan apabila penyebut menghadapi bahagian berbeza dari XML. Apabila ia menemui elemen "title", ia mencetak judul.

Mengurai XML dengan API DOM

DOM, atau Document Object Model, memuatkan keseluruhan dokumen XML ke dalam memori dan mewakili ia sebagai struktur rak. Ini membenarkan anda untuk menavigasi dan mengubahsuai dokumen dengan mudah.

Di sini cara anda mungkin menggunakan DOM di dalam Python:

import xml.dom.minidom

doc = xml.dom.minidom.parse("books.xml")
titles = doc.getElementsByTagName("title")
for title in titles:
print(f"Judul buku: {title.firstChild.data}")

Kod ini mengurai fail XML, mencari semua elemen "title", dan mencetak kandungannya.

API XML ElementTree

ElementTree adalah cara yang ringkas dan lebih Pythonic untuk bekerja dengan XML. Ia sering menjadi pilihan utama bagi banyak pengembang Python kerana kesederhanaannya dan kecekapan.

Di sini adalah contoh menggunakan ElementTree:

import xml.etree.ElementTree as ET

tree = ET.parse("books.xml")
root = tree.getroot()

for book in root.findall("book"):
title = book.find("title").text
print(f"Judul buku: {title}")

Kod ini melakukan perkara yang sama seperti contoh sebelumnya, tetapi dalam cara yang lebih langsung.

Mencipta Fail XML

Sekarang, mari kita cuba untuk mencipta fail XML dari atas dengan menggunakan ElementTree:

import xml.etree.ElementTree as ET

root = ET.Element("bookstore")
book = ET.SubElement(root, "book")
ET.SubElement(book, "title").text = "The Hitchhiker's Guide to the Galaxy"
ET.SubElement(book, "author").text = "Douglas Adams"
ET.SubElement(book, "year").text = "1979"

tree = ET.ElementTree(root)
tree.write("new_books.xml")

Skrip ini mencipta fail XML baru dengan entri buku. Ia seperti menjadi penulis, tetapi bukannya menulis buku, anda menulis XML!

Mengurai Fail XML

Kita sudah lihat contoh mengurai fail XML, tetapi mari kita lihat contoh yang lebih komprehensif menggunakan ElementTree:

import xml.etree.ElementTree as ET

tree = ET.parse("books.xml")
root = tree.getroot()

for book in root.findall("book"):
title = book.find("title").text
author = book.find("author").text
year = book.find("year").text
print(f"'{title}' oleh {author}, diterbitkan pada {year}")

Skrip ini membaca fail XML kita dan mencetak maklumat yang diformat tentang setiap buku.

Mengubahsuai Fail XML

Akhir sekali, mari kita ubahsuai fail XML yang sedia ada:

import xml.etree.ElementTree as ET

tree = ET.parse("books.xml")
root = tree.getroot()

for book in root.findall("book"):
year = int(book.find("year").text)
if year < 2000:
book.find("year").text = str(year + 100)

tree.write("modified_books.xml")

Skrip ini menambah 100 tahun kepada tahun terbit buku mana-mana yang diterbitkan sebelum 2000. Ia seperti kita menghantar buku ini ke masa depan!

Di sini adalah rakaman yang mengsumingkan metod utama yang kita telah gunakan:

Method Keterangan
ET.parse() Mengurai fail XML
ET.Element() Mencipta elemen baru
ET.SubElement() Mencipta anak elemen baru
element.findall() Mencari semua subelemen yang cocok
element.find() Mencari subelemen pertama yang cocok
element.text Mendapatkan atau mengatur teks elemen
tree.write() Menulis rak XML ke fail

Dan itu adalah semua! Kita telah membahas dasar-dasar pemprosesan XML di dalam Python. Ingat, latihan membuat perfect, jadi jangan takut untuk eksperimen dengan contoh ini. XML mungkin kelihatan agak menakutkan pada awalnya, tetapi sekali anda menguasainya, anda akan temukan ia adalah alat yang berkuasa untuk bekerja dengan data berstruktur.

Selamat pengoding, pemimpin XML masa depan! ??

Credits: Image by storyset