Using the ElementTree library in Module xml

Example 1: Selecting elements with findall

import xml.etree.ElementTree as ET

input = '''<stuff>
    <users>
        <user x="x1">
            <id>001</id>
            <name>John</name>
        </user>
        <user x="x2">
            <id>002</id>
            <name>Sam</name>
        </user>
    </users>
</stuff>'''

stuff = ET.fromstring(input)
lst = stuff.findall('users/user')
print('User count:', len(lst))

for item in lst:
    print('Name:', item.find('name').text)
    print('ID:', item.find('id').text)
    print('Attribute:', item.get('x'))

 

Example 2: Selecting elements with an XPath Selector

from urllib.request import urlopen
import ssl
import xml.etree.ElementTree as ET

# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

url = 'http://some-site.net/some-doc.xml'
print('Retrieving ', url)

data = urlopen(url, context=ctx).read()
print('Retrieved', len(data), 'characters')

tree = ET.fromstring(data)
lst = tree.findall('.//count')
count = 0
sum = 0
for item in lst:
    sum += int(item.text)
    count += 1

print('Count:', count)
print('Sum:', sum)