Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Menghuraikan XML dengan Berkesan dengan Pelbagai Ruang Nama dalam Python menggunakan ElementTree?

Bagaimana Menghuraikan XML dengan Berkesan dengan Pelbagai Ruang Nama dalam Python menggunakan ElementTree?

Patricia Arquette
Lepaskan: 2024-12-21 17:54:10
asal
610 orang telah melayarinya

How to Effectively Parse XML with Multiple Namespaces in Python using ElementTree?

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>
Salin selepas log masuk

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
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan