Python
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.
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.
Pustaka standar Python menyediakan serangkaian antarmuka yang minimal namun berguna untuk bekerja dengan XML.
Dua API yang paling dasar dan digunakan secara luas 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 pengurai melanjutkan melalui dokumen. Ini berguna ketika dokumen Anda berukuran besar atau Anda memiliki keterbatasan memori, ini akan 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 dimana 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
<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>
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 −
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.
Metode berikut membuat parser SAX dan menggunakannya untuk mengurai dokumen.
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Berikut adalah detail dari parameter
filexml Ini adalah nama file XML yang akan dibaca.
penangan konten Ini harus berupa objek ContentHandler.
penangan kesalahan Jika ditentukan, errorhandler harus berupa objek SAX ErrorHandler.
Ada satu metode lagi untuk membuat parser SAX dan mengurai string XML specified 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, errorhandler harus berupa objek SAX ErrorHandler.
#!/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 = "" # Call when an element starts def startElement(self, tag, attributes): self.CurrentData = tag if tag == "movie": print "*****Movie*****" title = attributes["title"] print "Title:", title # Call when an elements ends 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 = "" # Call when a character is read 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__"): # create an XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) # override the default ContextHandler 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 SAX API, silakan merujuk ke Python SAX API standar.
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 satu bit 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.
Frase contoh memanggil fungsi parse( file [,parser] ) dari objek minidom untuk mengurai file XML yang ditunjuk oleh file ke dalam objek pohon DOM.
#!/usr/bin/python from xml.dom.minidom import parse import xml.dom.minidom # Open XML document using minidom parser DOMTree = xml.dom.minidom.parse("movies.xml") collection = DOMTree.documentElement if collection.hasAttribute("shelf"): print "Root element : %s" % collection.getAttribute("shelf") # Get all the movies in the collection movies = collection.getElementsByTagName("movie") # Print detail of each movie. 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 DOM API, silakan merujuk ke Python DOM API standar.
Python
Python strptime() Dalam artikel ini, Anda akan belajar membuat objek datetime dari string (dengan bantuan contoh). Video:Tanggal dan Waktu dengan Python strptime() metode membuat objek datetime dari string yang diberikan. Catatan: Anda tidak dapat membuat datetime objek dari setiap string. Strin
Apa itu XML? XML adalah singkatan dari eXtensible Markup Language. Ini dirancang untuk menyimpan dan mengangkut data dalam jumlah kecil hingga sedang dan digunakan secara luas untuk berbagi informasi terstruktur. Python memungkinkan Anda untuk mengurai dan memodifikasi dokumen XML. Untuk mengurai
Pustaka Pencitraan Pillow Python sangat ideal untuk pemrosesan gambar. Biasanya, ini digunakan untuk aplikasi pengarsipan dan pemrosesan batch. Tentu saja, Anda bebas menggunakannya untuk hal lain yang dapat Anda pikirkan. Anda dapat menggunakan perpustakaan untuk: Buat gambar mini Konversi antar f
Jika Anda melewatkannya:Python 2 adalah secara resmi tidak didukung mulai 1 Januari 2020 . Jika Anda masih menggunakan Python 2.7, tingkatkan sekarang . Jika Anda tidak yakin versi apa yang Anda jalankan, periksa versi Python Anda. Banyak pengelola paket telah bermigrasi ke Python 3. Beberapa mas