Je veux utiliser la méthode de "findall" pour localiser certains éléments de la source de fichier xml dans le ElementTree module.
Cependant, la source xml (fichier test.xml) a espace de noms. Je tronquer une partie du fichier xml de l'échantillon:
<?xml version="1.0" encoding="iso-8859-1"?>
<XML_HEADER xmlns="http://www.test.com">
<TYPE>Updates</TYPE>
<DATE>9/26/2012 10:30:34 AM</DATE>
<COPYRIGHT_NOTICE>All Rights Reserved.</COPYRIGHT_NOTICE>
<LICENSE>newlicense.htm</LICENSE>
<DEAL_LEVEL>
<PAID_OFF>N</PAID_OFF>
</DEAL_LEVEL>
</XML_HEADER>
L'exemple de code python est ci-dessous:
from xml.etree import ElementTree as ET
tree = ET.parse(r"test.xml")
el1 = tree.findall("DEAL_LEVEL/PAID_OFF") # Return None
el2 = tree.findall("{http://www.test.com}DEAL_LEVEL/{http://www.test.com}PAID_OFF") # Return <Element '{http://www.test.com}DEAL_LEVEL/PAID_OFF' at 0xb78b90>
Bien qu'il fonctionne, parce qu'il y est un espace de noms "{http://www.test.com}", c'est très gênant pour ajouter un espace de noms en face de chaque balise.
Comment puis-je ignorer l'espace de noms lors de l'utilisation de la méthode de "trouver", "findall" et ainsi de suite?