Can't find elements using ElementTree find method

Stefan Behnel stefan_ml at behnel.de
Tue Aug 31 05:00:41 EDT 2010


Brendan Simon (eTRIX), 31.08.2010 10:49:
>   I am trying to use ElementTree (with Python 2.7) and can't seem to find
> elements at the top level.  The find() and findall() methods seem to
> find elements within the top level, but not if it the elements are at
> the top level.
>
> How do I find top level elements ??
> Here is my code.
>
>      import xml.etree.ElementTree as ET
>
>      xml = '''\
>      <?xml version="1.0" encoding="Windows-1252" ?>
>      <components>
>        <component>
>          <name>Fred</name>
>          <location>Australia</location>
>        </component>
>      </components>
>      '''
>
>      root = ET.fromstring( xml )
>
>      ### This pattern is not found :(
>      comps = root.find( './/components' )

"." matches the current element, so the path expression looks for all 
"components" nodes *below* the current element.

You can either wrap the root in an ElementTree and search globally (i.e. 
without the leading "."), or you can test the root node yourself.

Stefan




More information about the Python-list mailing list