Maison >développement back-end >Tutoriel Python >Comment analyser efficacement XML avec des espaces de noms dans ElementTree de Python ?

Comment analyser efficacement XML avec des espaces de noms dans ElementTree de Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-13 21:20:15418parcourir

How to Effectively Parse XML with Namespaces in Python's ElementTree?

Analyse XML avec espace de noms en Python via 'ElementTree' : résolution des préfixes d'espace de noms

Dans la tentative d'analyser un document XML avec plusieurs espaces de noms à l'aide ElementTree de Python, une erreur courante survient en raison de préfixes d'espace de noms non reconnus. Pour remédier à ce problème, il est nécessaire de fournir un dictionnaire d'espace de noms explicite.

Les méthodes .find(), findall() et iterfind() nécessitent un mappage des préfixes d'espace de noms aux URL. Pour le XML fourni, créez un dictionnaire d'espace de noms :

namespaces = {'owl': 'http://www.w3.org/2002/07/owl#'}

Utilisez ce dictionnaire pour rechercher des éléments :

# Find all owl:Class tags
root.findall('owl:Class', namespaces)

ElementTree utilisera le dictionnaire d'espace de noms pour résoudre automatiquement le préfixe « hibou » à son URL. Cela équivaut à :

# Resolve the prefix to its URL
owl_namespace = 'http://www.w3.org/2002/07/owl#'
root.findall('{' + owl_namespace + '}Class')

De plus, vous pouvez utiliser l'attribut .nsmap pour la résolution de l'espace de noms. Cependant, pour une prise en charge optimale des espaces de noms, envisagez de passer à la bibliothèque lxml. Il automatise la collecte des espaces de noms et offre une gestion globale améliorée des espaces de noms.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn