Рассмотрим следующий XML:

<?xml version="1.0"?>
<actors xmlns:fictional="http://characters.example.com"
        xmlns="http://people.example.com">
    <actor>
        <name>John Cleese</name>
        <fictional:character>Lancelot</fictional:character>
        <fictional:character>Archie Leach</fictional:character>
    </actor>
    <actor>
        <name>Eric Idle</name>
        <fictional:character>Sir Robin</fictional:character>
        <fictional:character>Gunther</fictional:character>
        <fictional:character>Commander Clement</fictional:character>
    </actor>
</actors>`

Мы можем использовать методы find или findall для извлечения элемента, но когда в вашем XML есть пространства имен, мы должны использовать правильное пространство имен перед именем элемента.

for actor in root.findall('{http://people.example.com}actor'):
    name = actor.find('{http://people.example.com}name')

Мы можем упростить его, используя словарь пространств имен:

ns = {'real_person': 'http://people.example.com',
      'role': 'http://characters.example.com'}

for actor in root.findall('real_person:actor', ns):
    name = actor.find('real_person:name', ns)

Что, если нам нужно прочитать XML с динамическими пространствами имен?

dynamicNS = root.tag.replace('actors', '')
for actor in root.findall(dynamicNS+'actor'):
    name = actor.find(dynamicNS+'name')

Мы можем использовать XPath, если нам нужно найти элемент во всем дереве XML, в следующем примере мы хотим получить все элементы «имя» в xml:

root.findall('.//'+dynamicNS+'name'):

Вот и все, если вы хотите узнать больше об ElementTree XML Api, вам следует посетить официальную документацию.