Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Pemrosesan XML Python: Panduan Manajemen Data Interoperabel

Halaman Sebelumnya Halaman Berikutnya  

XML adalah bahasa sumber terbuka portabel yang memungkinkan pengembang untuk mengembangkan aplikasi yang dapat dibaca oleh aplikasi lain, terlepas dari sistem operasi dan/atau bahasa pengembangan.

Apa itu XML?

Extensible Markup Language (XML) adalah bahasa markup yang mirip dengan HTML atau SGML. Ini direkomendasikan oleh World Wide Web Consortium dan tersedia sebagai standar terbuka.

XML sangat berguna untuk melacak sejumlah data kecil hingga menengah tanpa memerlukan tulang belakang berbasis SQL.

Arsitektur dan API Parser XML

Perpustakaan standar Python menyediakan seperangkat antarmuka minimal tetapi berguna untuk bekerja dengan XML.

Dua API paling dasar dan banyak digunakan untuk data XML adalah antarmuka SAX dan DOM.

SAX jelas tidak dapat memproses informasi secepat DOM saat bekerja dengan berkas besar. Di sisi lain, penggunaan DOM secara eksklusif dapat benar-benar membuang sumber daya Anda, terutama jika digunakan pada banyak berkas kecil.

SAX hanya baca, sementara DOM memungkinkan perubahan pada berkas XML. Karena dua API yang berbeda ini benar-benar melengkapi satu sama lain, tidak ada alasan mengapa Anda tidak dapat menggunakan keduanya untuk proyek besar.

Untuk semua contoh kode XML kita, mari kita gunakan berkas XML sederhana movies.xml sebagai masukan −

 <collection shelf="New Arrivals"> <movie title="Enemy Behind"> <type>War, Thriller</type> <format>DVD</format> <year>2003</year> <rating>PG</rating> <stars>10</stars> <description>Talk about a US-Japan war</description> </movie> <movie title="Transformers"> <type>Anime, Science Fiction</type> <format>DVD</format> <year>1989</year> <rating>R</rating> <stars>8</stars> <description>A schientific fiction</description> </movie> <movie title="Trigun"> <type>Anime, Action</type> <format>DVD</format> <episodes>4</episodes> <rating>PG</rating> <stars>10</stars> <description>Vash the Stampede!</description> </movie> <movie title="Ishtar"> <type>Comedy</type> <format>VHS</format> <rating>PG</rating> <stars>2</stars> <description>Viewable boredom</description> </movie> </collection> 

Parsing XML dengan API SAX

SAX adalah antarmuka standar untuk parsing XML yang didorong peristiwa. Parsing XML dengan SAX umumnya memerlukan Anda untuk membuat ContentHandler Anda sendiri dengan subclassing xml.sax.ContentHandler.

ContentHandler Anda menangani tag dan atribut khusus dari variasi XML Anda. Objek ContentHandler menyediakan metode untuk menangani berbagai peristiwa parsing. Parser pemiliknya memanggil metode ContentHandler saat ia memparsing berkas XML.

Metode startDocument dan endDocument dipanggil di awal dan akhir berkas XML. Metode characters(text) diteruskan data karakter berkas XML melalui parameter text.

ContentHandler dipanggil di awal dan akhir setiap elemen. Jika parser tidak dalam mode namespace, metode startElement(tag, attributes) dan endElement(tag) dipanggil; jika tidak, metode yang sesuai startElementNS dan endElementNS dipanggil. Di sini, tag adalah tag elemen, dan attributes adalah objek Attributes.

Berikut adalah metode penting lainnya untuk dipahami sebelum melanjutkan −

Metode make_parser

Metode berikut membuat objek parser baru dan mengembalikannya. Objek parser yang dibuat akan menjadi tipe parser pertama yang ditemukan sistem.

 xml.sax.make_parser( [parser_list] ) 

Berikut adalah detail parameter −

Metode parse

Metode berikut membuat parser SAX dan menggunakannya untuk memparsing dokumen.

 xml.sax.parse( xmlfile, contenthandler[, errorhandler]) 

Berikut adalah detail parameter −

Metode parseString

Ada satu metode lagi untuk membuat parser SAX dan memparsing string XML yang ditentukan.

 xml.sax.parseString(xmlstring, contenthandler[, errorhandler]) 

Berikut adalah detail parameter −

Contoh

 #!/usr/bin/python import xml.sax class MovieHandler( xml.sax.ContentHandler ): def __init__(self): self.CurrentData = "" self.type = "" self.format = "" self.year = "" self.rating = "" self.stars = "" self.description = "" # Dipanggil saat elemen dimulai def startElement(self, tag, attributes): self.CurrentData = tag if tag == "movie": print "*****Movie*****" title = attributes["title"] print "Title:", title # Dipanggil saat elemen selesai def endElement(self, tag): if self.CurrentData == "type": print "Type:", self.type elif self.CurrentData == "format": print "Format:", self.format elif self.CurrentData == "year": print "Year:", self.year elif self.CurrentData == "rating": print "Rating:", self.rating elif self.CurrentData == "stars": print "Stars:", self.stars elif self.CurrentData == "description": print "Description:", self.description self.CurrentData = "" # Dipanggil saat karakter dibaca def characters(self, content): if self.CurrentData == "type": self.type = content elif self.CurrentData == "format": self.format = content elif self.CurrentData == "year": self.year = content elif self.CurrentData == "rating": self.rating = content elif self.CurrentData == "stars": self.stars = content elif self.CurrentData == "description": self.description = content if ( __name__ == "__main__"): # buat objek XMLReader parser = xml.sax.make_parser() # matikan namespace parser.setFeature(xml.sax.handler.feature_namespaces, 0) # ganti ContentHandler default Handler = MovieHandler() parser.setContentHandler( Handler ) parser.parse("movies.xml") 

Ini akan menghasilkan hasil berikut −

 *****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Year: 2003 Rating: PG Stars: 10 Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Year: 1989 Rating: R Stars: 8 Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Stars: 10 Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Stars: 2 Description: Viewable boredom 

Untuk detail lengkap tentang dokumentasi API SAX, silakan merujuk ke API SAX standar Python.

Parsing XML dengan API DOM

Model Objek Dokumen ("DOM") adalah antarmuka lintas bahasa dari Konsorsium Web Dunia (W3C) untuk mengakses dan memodifikasi dokumen XML.

DOM sangat berguna untuk aplikasi akses acak. SAX hanya memungkinkan Anda melihat satu bagian dari dokumen pada satu waktu. Jika Anda melihat satu elemen SAX, Anda tidak memiliki akses ke yang lain.

Berikut adalah cara termudah untuk dengan cepat memuat dokumen XML dan membuat objek minidom menggunakan modul xml.dom. Objek minidom menyediakan metode parser sederhana yang dengan cepat membuat pohon DOM dari berkas XML.

Frasa contoh memanggil fungsi parse( file [,parser] ) dari objek minidom untuk memparsing berkas XML yang ditentukan oleh file menjadi objek pohon DOM.

 #!/usr/bin/python from xml.dom.minidom import parse import xml.dom.minidom # Buka dokumen XML menggunakan parser minidom DOMTree = xml.dom.minidom.parse("movies.xml") collection = DOMTree.documentElement if collection.hasAttribute("shelf"): print "Root element : %s" % collection.getAttribute("shelf") # Dapatkan semua film dalam koleksi movies = collection.getElementsByTagName("movie") # Cetak detail setiap film. for movie in movies: print "*****Movie*****" if movie.hasAttribute("title"): print "Title: %s" % movie.getAttribute("title") type = movie.getElementsByTagName('type')[0] print "Type: %s" % type.childNodes[0].data format = movie.getElementsByTagName('format')[0] print "Format: %s" % format.childNodes[0].data rating = movie.getElementsByTagName('rating')[0] print "Rating: %s" % rating.childNodes[0].data description = movie.getElementsByTagName('description')[0] print "Description: %s" % description.childNodes[0].data 

Ini akan menghasilkan hasil berikut −

 Root element : New Arrivals *****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Rating: PG Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Rating: R Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Description: Viewable boredom 

Untuk detail lengkap tentang dokumentasi API DOM, silakan merujuk ke API DOM standar Python.


Python

  1. Menguasai Tipe Data Python: Panduan Praktis
  2. Menguasai Operator Python: Panduan Komprehensif
  3. Menguasai Pernyataan Pass Python: Panduan Praktis
  4. Menguasai Argumen Fungsi Python: Posisi, Kata Kunci, dan Parameter Default
  5. Menguasai Kamus Python: Pembuatan, Manipulasi, dan Teknik Lanjutan
  6. Menguasai Iterator Python: Cara Kerja dan Membuat Sendiri
  7. Penutupan (Closure) Python Dijelaskan: Cara Fungsi Bertingkat Mengambil Variabel
  8. Menguasai Python datetime: Panduan Praktis Tanggal, Waktu, dan Zona Waktu
  9. Menguasai time.sleep() Python: Best Practices, Multithreading, dan Contoh Dunia Nyata
  10. Tinjauan Python: Tinggi Level, Mudah Dibaca, Interaktif, dan Berorientasi Objek