Skip to main content
Engineering LibreTexts

13.2: Looping through Nodes

[ "article:topic", "authorname:severancec", "python (language)", "jupyter:python", "license:ccbyncsa" ]
  • Page ID
  • Often the XML has multiple nodes and we need to write a loop to process all of the nodes. In the following program, we loop through all of the user nodes:

    Code \(\PageIndex{1}\) (Python):

    import xml.etree.ElementTree as ET
    input = '''
            <user x="2">
            <user x="7">
    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"))
    # Code:

    The findall method retrieves a Python list of subtrees that represent the user structures in the XML tree. Then we can write a for loop that looks at each of the user nodes, and prints the name and id text elements as well as the x attribute from the user node.

    User count: 2
    Name Chuck
    Id 001
    Attribute 2
    Name Brent
    Id 009
    Attribute 7