Analizar XML grande con lxml

Estoy tratando de hacer que mi script funcione. Hasta el momento no se ha logrado producir nada.

Este es mi test.xml

  MediaWiki:Category 0 2  11248 2003-12-31T13:47:54Z  Frieda 0   categoria 0acykl71lto9v65yve23lmjgia1h6sz wikitext text/x-wiki    

Y este es mi código

 from lxml import etree def fast_iter(context, func): # fast_iter is useful if you need to free memory while iterating through a # very large XML file. # # http://www.ibm.com/developerworks/xml/library/x-hiperfparse/ # Author: Liza Daly for event, elem in context: func(elem) elem.clear() while elem.getprevious() is not None: del elem.getparent()[0] del context def process_element(elem): if elem.ns.text == '0': print elem.title.text context=etree.iterparse('test.xml', events=('end',), tag='page') fast_iter(context, process_element) 

No recibo ningún error, simplemente no hay salida. Lo que quiero obtener es analizar el elemento si es 0.

Está analizando un documento con espacio de nombre y no hay una etiqueta de 'page' presente, porque eso solo se aplica a las tags sin un espacio de nombres.

En su lugar, busca el elemento '{http://www.mediawiki.org/xml/export-0.8/}page' , que contiene un '{http://www.mediawiki.org/xml/export-0.8/}ns' elemento de '{http://www.mediawiki.org/xml/export-0.8/}ns' .

Muchos métodos lxml permiten especificar un mapa de espacio de nombres para facilitar la comparación, pero iterparse() método iterparse() no es uno de ellos.

La siguiente llamada .iterparse() ciertamente procesa las tags de page correctas:

 context = etree.iterparse('test.xml', events=('end',), tag='{http://www.mediawiki.org/xml/export-0.8/}page') 

pero deberá usar .find() para obtener las tags ns y title en el elemento de la página, o usar las llamadas xpath() para obtener el texto directamente:

 def process_element(elem): if elem.xpath("./*[local-name()='ns']/text()=0"): print elem.xpath("./*[local-name()='title']/text()")[0] 

que, para su ejemplo de entrada, imprime:

 >>> fast_iter(context, process_element) MediaWiki:Category