Comment ignorer les espaces de noms XML pour l'emplacement des éléments dans Python ElementTree ?

Linda Hamilton
Libérer: 2024-10-26 07:18:30
original
526 Les gens l'ont consulté

How to Ignore XML Namespaces for Element Location in Python ElementTree?

Ignorer les espaces de noms XML pour l'emplacement des éléments dans Python ElementTree

Dans le module ElementTree, localiser des éléments spécifiques dans un fichier XML peut être difficile en cas de rencontre espaces de noms, comme illustré dans l’exemple fourni. Lors de l'utilisation de la méthode findall, l'inclusion de {http://www.test.com} avant chaque balise devient gênante.

Solution :

Au lieu de modifier le XML lui-même, une approche plus optimale consiste à modifier les noms des balises après avoir analysé le XML. Cela permet la gestion de plusieurs espaces de noms et alias d'espace de noms.

Voici le code modifié à l'aide de la fonction iterparse :

<code class="python">from io import StringIO  # for Python 2 import from StringIO instead
import xml.etree.ElementTree as ET

with open('test.xml', 'r') as f:
    xml = f.read()

it = ET.iterparse(StringIO(xml))
for _, el in it:
    _, _, el.tag = el.tag.rpartition('}')  # strip ns

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

En définissant _, _, el.tag = el.tag. rpartition('}'), l'espace de noms (_{http://www.test.com}) est supprimé du nom de la balise. Cela permet le traitement ultérieur des balises sans tenir compte de leurs espaces de noms. Par conséquent, la méthode findall :

<code class="python">el1 = root.findall("DEAL_LEVEL/PAID_OFF")</code>
Copier après la connexion

renverra le élément sans le préfixe d'espace 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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!