Can't find elements using ElementTree find method

Brendan Simon (eTRIX) brendan.simon at etrix.com.au
Tue Aug 31 06:51:53 EDT 2010


 I can't use getroot() when using fromstring() -- as fromstring()
returns an Element, not an ElementTree object.

Yes, my root is the 'components' element, but find() seems to insist on
searching for sub-elements.

Ideally, I would like root.find('components') or
root.find('./components') to find the components element at the top-level.

I'd also like to be able to do root.find('./components/component') or
root.find('./components/component/name') and so on.

I guess I just have to check that root.tag == 'components' first, then
search for './component', './component/name' and so on.  It's a bit
ugly, but heaps better than using minidom :)

Cheers, Brendan.


On 31/08/10 6:57 PM, Nitin Pawar wrote:
> Try using getroot()
>
> I think your root is components so its searching in root 
>
> On Tue, Aug 31, 2010 at 2:19 PM, Brendan Simon (eTRIX)
> <brendan.simon at etrix.com.au <mailto:brendan.simon at etrix.com.au>> wrote:
>
>     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' )
>
>         ### These patterns are found ok :)
>         comp = root.find( './/component' )
>         name = root.find( './/name' )
>
>         print 'comps =', comps
>         print 'comp =', comp
>         print 'name =', name
>
>
>     Thanks, Brendan.
>
>
>     --
>     http://mail.python.org/mailman/listinfo/python-list
>
>
>
>
> -- 
> Nitin Pawar
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100831/e0a5dd2d/attachment-0001.html>


More information about the Python-list mailing list