Tutorial Python XML parsing Terbaik Pada tahun 2024, Dalam tutorial ini Anda dapat mempelajari Apa XML?,python untuk parsing XML,python xml parsing menggunakan SAX,metode make_parser,metode parser,metode parseString,Python parsing contoh XML,Gunakan xml.dom parse xml,
XML berarti Extensible Markup Language(e X tensible M arkup L anguage). Anda dapat belajar melalui situs ini XML Tutorial
XML dirancang untuk mengirim dan menyimpan data.
XML adalah seperangkat aturan untuk menentukan semantik tag, tag ini akan mendokumentasikan dibagi menjadi banyak bagian dan bagian-bagian ini untuk diidentifikasi.
Ini juga merupakan bahasa meta-markup yang mendefinisikan sintaks dari bahasa yang digunakan untuk mendefinisikan, semantik, terstruktur bahasa markup domain-spesifik lainnya.
DOM umum dan XML pemrograman antarmuka SAX, dua antarmuka yang berbeda dengan XML file cara, tentu saja, penggunaan kesempatan yang berbeda.
Ada tiga cara python parsing XML, SAX, DOM, dan ElementTree:
python perpustakaan standar berisi SAX parser, SAX dengan model-event, dipicu oleh salah satu acara dalam proses parsing XML dan memanggil fungsi callback yang ditetapkan pengguna untuk menangani file XML.
Data XML parsing ke pohon di memori, yang beroperasi melalui pohon untuk memanipulasi XML.
ElementTree sebagai DOM ringan, dengan API nyaman dan ramah. ketersediaan kode, cepat dan mengkonsumsi lebih sedikit memori.
Catatan: Karena DOM perlu memetakan data XML menjadi pohon memori, satu lambat, yang kedua adalah lebih konsumsi memori, SAX streaming yang membaca file XML lebih cepat, mengambil sedikit memori, tetapi mengharuskan pengguna untuk menerapkan callback (handler ).
Gunakan bagian ini untuk sebuah movies.xml XML contoh dokumen berbunyi sebagai berikut:
<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 API-event.
Gunakan SAX parsing dokumen XML melibatkan dua bagian: parser dan event handler.
parser bertanggung jawab untuk membaca dokumen XML, dan mengirimkan event event, seperti elemen mulai dengan acara elemen akhir;
Event handler bertanggung jawab untuk acara sesuai, transfer data XML untuk diproses.
Gunakan sax xml.sax cara xml pertama kali diperkenalkan pada fungsi parse, serta xml.sax.handler ContentHandler di python.
karakter (konten) metode
Waktu panggilan:
Dari awal baris, sebelum mengalami label, ada nilai karakter, isi dari string ini.
Dari label, label sebelum pertemuan berikutnya, kehadiran karakter, nilai isi string ini.
Dari label, sebelum menghadapi terminator baris, kehadiran karakter, nilai isi string ini.
Tag mungkin menjadi awal dari tag, dapat menjadi akhir dari label.
startDocument () metode
Dokumentasi startup disebut.
endDocument () metode
Ketika panggilan mencapai akhir parser dokumen.
startElement (nama, attrs) metode
Sebut ditemui start tag XML, nama adalah nama tag, attrs adalah tag nilai properti kamus.
endElement metode (nama)
Panggilan ditemui tag XML akhir.
Metode berikut membuat objek parser baru dan kembali.
xml.sax.make_parser( [parser_list] )
Parameter Deskripsi:
Metode berikut membuat parser SAX dan mengurai dokumen xml:
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Parameter Deskripsi:
Metode parseString menciptakan parser XML dan mengurai string xml:
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Parameter Deskripsi:
#!/usr/bin/python # -*- coding: UTF-8 -*- 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 = "" # 元素开始事件处理 def startElement(self, tag, attributes): self.CurrentData = tag if tag == "movie": print "*****Movie*****" title = attributes["title"] print "Title:", title # 元素结束事件处理 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 = "" # 内容事件处理 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__"): # 创建一个 XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) # 重写 ContextHandler Handler = MovieHandler() parser.setContentHandler( Handler ) parser.parse("movies.xml")
Kode di atas dijalankan sebagai 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
Lengkap SAX dokumentasi API silakan merujuk ke Python SAX API
Document Object Model (Document Object Model, disebut sebagai DOM), itu adalah pengobatan W3C-direkomendasikan Extensible Markup Language pemrograman antarmuka standar.
Dalam parser DOM untuk mengurai dokumen XML, membaca seluruh dokumen sekaligus, semua elemen dari dokumen yang disimpan dalam struktur pohon di memori, maka Anda dapat menggunakan DOM untuk menyediakan fungsi yang berbeda untuk membaca atau memodifikasi dokumen konten dan struktur dimodifikasi untuk menulis isi dari file xml.
python dengan xml.dom.minidom untuk mengurai dokumen xml, contoh adalah sebagai berikut:
#!/usr/bin/python # -*- coding: UTF-8 -*- from xml.dom.minidom import parse import xml.dom.minidom # 使用minidom解析器打开 XML 文档 DOMTree = xml.dom.minidom.parse("movies.xml") collection = DOMTree.documentElement if collection.hasAttribute("shelf"): print "Root element : %s" % collection.getAttribute("shelf") # 在集合中获取所有电影 movies = collection.getElementsByTagName("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
Hasil dari prosedur di atas adalah sebagai 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
Lengkap DOM dokumentasi API silakan lihat Python DOM API .