Menghuraikan XML dengan Berbilang Ruang Nama dalam Python menggunakan ElementTree
Apabila menghuraikan XML dengan berbilang ruang nama dalam Python menggunakan ElementTree, anda mungkin menghadapi ralat disebabkan konflik ruang nama. Mari kita selesaikan isu ini dengan penyelesaian.
Ralat Ruang Nama semasa Mencari burung hantu:Teg Kelas
Pertimbangkan XML berikut dengan berbilang ruang nama:
<rdf:RDF xml:base="http://dbpedia.org/ontology/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns="http://dbpedia.org/ontology/"> <owl:Class rdf:about="http://dbpedia.org/ontology/BasketballLeague"> <rdfs:label xml:lang="en">basketball league</rdfs:label> <rdfs:comment xml:lang="en"> a group of sports teams that compete against each other in Basketball </rdfs:comment> </owl:Class> </rdf:RDF>
Percubaan untuk mencari semua burung hantu:Teg kelas menggunakan pengendalian ruang nama lalai boleh mengakibatkan perkara berikut ralat:
SyntaxError: prefix 'owl' not found in prefix map
Penyelesaian: Kamus Ruang Nama Eksplisit
Untuk menyelesaikan ralat ini, anda perlu menyediakan kamus ruang nama eksplisit kepada find() dan findall() kaedah:
namespaces = {'owl': 'http://www.w3.org/2002/07/owl#'} # add more as needed tree = ET.parse("filename") root = tree.getroot() root.findall('owl:Class', namespaces)
Kamus ruang nama ini memetakan awalan 'burung hantu' ke URL ruang nama yang sepadan. Dengan menghantar kamus ini kepada kaedah, anda mentakrifkan ruang nama yang akan digunakan secara eksplisit.
Pengendalian Ruang Nama Alternatif
Jika boleh, tukar kepada pustaka lxml dan bukannya ElementTree. Lxml mempunyai sokongan ruang nama yang unggul, mengumpul awalan ruang nama secara automatik dalam atribut .nsmap elemen.
Atas ialah kandungan terperinci Bagaimana Menghuraikan XML dengan Berkesan dengan Pelbagai Ruang Nama dalam Python menggunakan ElementTree?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!