Cómo obtener datos de un archivo XML con xmlns en la raíz

número.xml

   123@test.com 22 2017-12-05  

numero.py

 import xml.etree.ElementTree as ET tree = ET.parse('number.xml') root = tree.getroot() for country in root.findall('ResponseDate'): rank = country.find('emailid').text name = country.find('number').text print(name, rank) 

Devolviendo resultados vacíos, pero cuando modifico el xml a name = en lugar de xmlns = entonces está funcionando. Pero, ¿cómo hacer que este script funcione con los xmlns?

Tenga en cuenta que xmlns sin prefijo en XML declara el espacio de nombres predeterminado , y los elementos descendientes sin prefijo heredan implícitamente el espacio de nombres predeterminado de los ancestros. Ahora, para encontrar el elemento en el espacio de nombres, puede definir un prefijo que haga referencia a la URI del espacio de nombres y usar la combinación de ese prefijo y el nombre local del elemento de destino:

 .... ns = { 'd': 'http://example.com/schema' } for country in root.findall('d:ResponseDate', ns): rank = country.find('d:emailid', ns).text name = country.find('d:number', ns).text print(name, rank)