Maison >développement back-end >Tutoriel Python >Comment ignorer les espaces de noms XML pour l'emplacement des éléments dans 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>
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>
renverra le
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!