Comment puis-je ignorer les espaces de noms XML lors de l'utilisation des méthodes findall et find d'ElementTree ?

Susan Sarandon
Libérer: 2024-10-27 06:46:29
original
535 Les gens l'ont consulté

How can I ignore XML namespaces when using ElementTree's findall and find methods?

Ignorer l'espace de noms XML dans ElementTree

Les méthodes findall et find d'ElementTree nécessitent une approche prenant en compte les espaces de noms lors de la localisation d'éléments à partir d'un fichier XML contenant des espaces de noms. Cependant, cela peut être fastidieux si de nombreuses balises nécessitent des espaces de noms.

Ignorer l'espace de noms avec Iterparse

Pour ignorer les espaces de noms, nous pouvons utiliser la méthode iterparse d'ElementTree. Voici comment :

<code class="python">from io import StringIO  # Python 2: import from StringIO instead

import xml.etree.ElementTree as ET

# Parse the XML file
it = ET.iterparse(StringIO(xml))

# Strip namespace from tags
for _, el in it:
    _, _, el.tag = el.tag.rpartition('}') # strip ns

root = it.root</code>
Copier après la connexion

Cette approche modifie les noms de balises en supprimant les espaces de noms, ce qui permet un emplacement plus facile des éléments sans spécifier explicitement les espaces de noms. Comme suggéré dans la discussion ici, cette technique offre une plus grande flexibilité dans la gestion de plusieurs espaces de noms et alias.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal