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!