XPath-like filtering for ElementTree

Jean-Paul Calderone exarkun at divmod.com
Mon Dec 26 22:45:29 EST 2005


On 26 Dec 2005 15:42:56 -0800, Gerard Flanagan <grflanagan at yahoo.co.uk> wrote:
>Pseudo-XPath support for ElementTree with the emphasis on 'Pseudo'.
>
>    http://gflanagan.net/site/python/pagliacci/ElementFilter.html
>
> [snip]
>
>    ns = "xmlns1"
>    path = r"{%s}To/{%s}mailto[@name=='Mrs Jones' and @test==3]" %
>(ns,ns)

How about promoting the query to a set of Python objects?  eg,

    path = Query(
        ns.xmlns1.To / ns.xmlns1.mailto['name': 'Mrs Jones',
                                        'test': '3'])

That's just off the top of my head as an example of the kind of thing 
I mean.  There is probably a better (more consistent, flexible, easier 
to read, etc) spelling possible.

The advantages of this over strings is that you can break the query up 
into multiple pieces, pass parts of it around as real, live objects with 
introspectable APIs, allow for mutation of portions of the query, 
re-arrange it, etc.  All this is possible with strings too, just way 
harder :)

Jean-Paul



More information about the Python-list mailing list