¿Cómo uso espacios de nombres vacíos en una consulta xx de lxml?

Tengo un documento xml en el siguiente formato:

 ...  https://ip.ad.dr.ess:8000/feeds/diagnostics/smb://ip.ad.dr.ess/path/to/file 2011-11-07T21:32:39.795Z 2011-11-07T21:32:39.795Z   smb://ip.ad.dr.ess/path/to/directory 7 0 DirectoryContentData 0   ...  ...  

Necesito recuperar todos entry elementos de entry usando xpath en lxml. Mi problema es que no puedo entender cómo usar un espacio de nombres vacío. He intentado los siguientes ejemplos, pero ninguno funciona. Por favor avise.

 import lxml.etree as et tree=et.fromstring(xml) 

Las varias cosas que he intentado son:

 for node in tree.xpath('//entry'): 

o

 namespaces = {None:"http://www.w3.org/2005/Atom" ,"openSearch":"http://a9.com/-/spec/opensearchrss/1.0/" ,"gsa":"http://schemas.google.com/gsa/2007"} for node in tree.xpath('//entry', namespaces=ns): 

o

 for node in tree.xpath('//\"{http://www.w3.org/2005/Atom}entry\"'): 

En este punto simplemente no sé qué intentar. Cualquier ayuda es muy apreciada.

Algo como esto debería funcionar:

 import lxml.etree as et ns = {"atom": "http://www.w3.org/2005/Atom"} tree = et.fromstring(xml) for node in tree.xpath('//atom:entry', namespaces=ns): print node 

Véase también http://lxml.de/xpathxslt.html#namespaces-and-prefixes .

Alternativa:

 for node in tree.xpath("//*[local-name() = 'entry']"): print node 

Utilice el método findall .

 for item in tree.findall('{http://www.w3.org/2005/Atom}entry'): print item