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

Python - Pemrosesan XML

Halaman SebelumnyaHalaman Berikutnya

XML adalah bahasa open source portabel yang memungkinkan pemrogram 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 seperti HTML atau SGML. Ini direkomendasikan oleh World Wide Web Consortium dan tersedia sebagai standar terbuka.

XML sangat berguna untuk melacak data dalam jumlah kecil hingga menengah tanpa memerlukan tulang punggung berbasis SQL.

Arsitektur dan API Parser XML

Pustaka standar Python menyediakan set antarmuka yang minimal namun berguna untuk bekerja dengan XML.

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

  • API Sederhana untuk XML (SAX) Di sini, Anda mendaftarkan panggilan balik untuk acara yang menarik dan kemudian membiarkan parser melanjutkan melalui dokumen. Ini berguna ketika dokumen Anda berukuran besar atau Anda memiliki keterbatasan memori, ini mem-parsing file saat dibaca dari disk dan seluruh file tidak pernah disimpan dalam memori.

  • API Model Objek Dokumen (DOM) Ini adalah rekomendasi World Wide Web Consortium di mana seluruh file dibaca ke dalam memori dan disimpan dalam bentuk hierarkis (berbasis pohon) untuk mewakili semua fitur dokumen XML.

SAX jelas tidak dapat memproses informasi secepat DOM ketika bekerja dengan file besar. Di sisi lain, menggunakan DOM secara eksklusif dapat benar-benar mematikan sumber daya Anda, terutama jika digunakan pada banyak file kecil.

SAX bersifat read-only, sedangkan DOM memungkinkan perubahan pada file XML. Karena kedua API yang berbeda ini benar-benar saling melengkapi, tidak ada alasan mengapa Anda tidak dapat menggunakan keduanya untuk proyek besar.

Untuk semua contoh kode XML, mari gunakan file XML sederhana movies.xml sebagai masukan

 War, Thriller DVD 2003 PG 10 Bicara tentang perang AS-Jepang Anime, Fiksi Ilmiah DVD 1989 R 8 Fiksi ilmiah  Anime, Aksi DVD 4 PG 10 Vash the Stampede! Komedi VHS PG  2 Kebosanan yang terlihat

Mengurai XML dengan SAX API

SAX adalah antarmuka standar untuk penguraian XML yang digerakkan oleh peristiwa. Parsing XML dengan SAX umumnya mengharuskan Anda untuk membuat ContentHandler Anda sendiri dengan mensubklasifikasikan xml.sax.ContentHandler.

ContentHandler . Anda menangani tag dan atribut tertentu dari rasa XML Anda. Objek ContentHandler menyediakan metode untuk menangani berbagai peristiwa penguraian. Parser miliknya memanggil metode ContentHandler saat mem-parsing file XML.

Metode startDocument dan endDocument dipanggil di awal dan akhir file XML. Metode karakter(teks) dilewatkan data karakter file XML melalui teks parameter.

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

Berikut adalah metode penting lainnya untuk dipahami sebelum melanjutkan

make_parser Metode

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

xml.sax.make_parser( [parser_list] )

Berikut adalah detail dari parameter

  • daftar_parser Argumen opsional yang terdiri dari daftar parser untuk digunakan yang semuanya harus mengimplementasikan metode make_parser.

mengurai Metode

Metode berikut membuat parser SAX dan menggunakannya untuk mengurai dokumen.

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

Berikut adalah detail dari parameter

  • file xml Ini adalah nama file XML yang akan dibaca.

  • penangan konten Ini harus berupa objek ContentHandler.

  • penangan kesalahan Jika ditentukan, penangan kesalahan harus berupa objek SAX ErrorHandler.

parseString Metode

Ada satu metode lagi untuk membuat pengurai SAX dan mengurai string XML . yang ditentukan .

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

Berikut adalah detail dari parameter

  • xmlstring Ini adalah nama dari string XML untuk dibaca.

  • penangan konten Ini harus berupa objek ContentHandler.

  • penangan kesalahan Jika ditentukan, penangan kesalahan harus berupa objek SAX ErrorHandler.

Contoh

#!/usr/bin/pythonimport xml.saxclass MovieHandler( xml.sax.ContentHandler ):def __init__(self):self.CurrentData ="" self .type ="" self.format ="" self.year ="" self.rating ="" self.stars ="" self.description ="" # Panggil saat elemen memulai def startElement(self, tag, atribut) :self.CurrentData =tag if tag =="movie":print "******Movie*****" title =atribut["title"] print "Title:", title # Panggil ketika elemen berakhir def endElement(self, tag):if self.CurrentData =="type":print "Type:", self.type elif self.CurrentData =="format":print "Format:", self.format elif self.CurrentData =="tahun":print "Tahun:", 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 ="" # Panggil ketika karakter dibaca def character(self, content):if self.Cu rrentData =="type":self.type =konten elif self.CurrentData =="format":self.format =konten elif self.CurrentData =="year":self.year =konten elif self.CurrentData =="rating ":self.rating =konten elif self.CurrentData =="bintang":self.stars =konten elif self.CurrentData =="description":self.description =konten if ( __name__ =="__main__"):# buat XMLReader parser =xml.sax.make_parser() # matikan namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) # ganti default ContextHandler Handler =MovieHandler() parser.setContentHandler( Handler ) parser.parse("movies .xml")

Ini akan menghasilkan hasil berikut

******Film******Judul:Enemy BehindType:War, ThrillerFormat:DVDYear:2003Rating:PGStars:10Deskripsi:Bicara tentang perang AS-Jepang****Film *****Judul:TransformersJenis:Anime, Fiksi IlmiahFormat:DVDTahun:1989Rating:RStars:8Deskripsi:Sebuah fiksi ilmiah****Film****Judul:TrigunType:Anime, ActionFormat:DVDRating:PGStars:10Deskripsi:Vash the Stampede!******Film****Judul:IshtarType:ComedyFormat:VHSRating:PGStars:2Deskripsi:Kebosanan yang terlihat

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

Mengurai XML dengan DOM API

Document Object Model ("DOM") adalah API lintas bahasa dari World Wide Web Consortium (W3C) untuk mengakses dan memodifikasi dokumen XML.

DOM sangat berguna untuk aplikasi akses acak. SAX hanya memungkinkan Anda melihat sedikit dokumen pada satu waktu. Jika Anda melihat satu elemen SAX, Anda tidak memiliki akses ke elemen lainnya.

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

Contoh frase memanggil fungsi parse( file [,parser] ) dari objek minidom untuk mengurai file XML yang ditunjuk oleh file ke dalam objek pohon DOM.

#!/usr/bin/pythonfrom xml.dom.minidom import parseimport xml.dom.minidom# Buka dokumen XML menggunakan minidom parserDOMTree =xml.dom.minidom.parse("movies.xml" )collection =DOMtree.documentElementif collection.hasAttribute("shelf"):print "Root element :%s" % collection.getAttribute("shelf")# Dapatkan semua film dalam koleksi film =collection.getElementsByTagName("movie")# Cetak detail setiap film.untuk film dalam film: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 "Deskripsi:%s" % description.childNodes[0].data

Ini akan menghasilkan hasil berikut

Elemen root :Pendatang Baru****Film****Judul:Enemy BehindType:War, ThrillerFormat:DVDRating:PGDeskripsi:Bicara tentang perang AS-Jepang**** Film*****Judul:TransformersJenis:Anime, Fiksi IlmiahFormat:DVDRating:RDeskripsi:Sebuah fiksi ilmiah******Film****Judul:TrigunType:Anime, ActionFormat:DVDRating:PGDeskripsi:Vash the Stampede!* ****Film*****Judul:IshtarType:ComedyFormat:VHSRating:PGDeskripsi:Kebosanan yang terlihat

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


Python

  1. Python Vs Ruby:Perbedaan antara Ruby dan Python
  2. Python Ganti Nama File dan Direktori menggunakan os.rename()
  3. Fungsi Python
  4. Cara Menginstal Python di Windows [Pycharm IDE]
  5. Python for Loop
  6. Bekerja Dengan Emoji dengan Python