Tutorial Python3 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 mengacu pada extensible markup language(e X tensible M arkup L anguage), sebuah subset dari Standard Generalized Markup Language, adalah metode untuk menandai dokumen elektronik memiliki bahasa markup terstruktur. 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.
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/python3 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/python3 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 .