Tengo un conjunto de archivos XML super simples para analizar ... pero ... usan entidades definidas a medida. No necesito asignarlos a los personajes, pero sí quiero analizarlos y actuar en cada uno. Por ejemplo:Compatibilidad con Python ElementTree para analizar entidades XML desconocidas
<Style name="admin-5678">
<Rule>
<Filter>[admin_level]='5'</Filter>
&maxscale_zoom11;
</Rule>
</Style>
Hay una tentadora pista en http://effbot.org/elementtree/elementtree-xmlparser.htm que XMLParser ha limitado el apoyo entidad, pero no puede encontrar los métodos mencionados, todo lo que da errores:
#!/usr/bin/python
##
## Where's the entity support as documented at:
## http://effbot.org/elementtree/elementtree-xmlparser.htm
## In Python 2.7.1+ ?
##
from pprint import pprint
from xml.etree import ElementTree
from cStringIO import StringIO
parser = ElementTree.ElementTree()
#parser.entity["maxscale_zoom11"] = unichr(160)
testf = StringIO('<foo>&maxscale_zoom11;</foo>')
tree = parser.parse(testf)
#tree = parser.parse(testf,"XMLParser")
for node in tree.iter('foo'):
print node.text
que, dependiendo de cómo se ajustar los comentarios da:
xml.etree.ElementTree.ParseError: undefined entity: line 1, column 5
o
AttributeError: 'ElementTree' object has no attribute 'entity'
o
AttributeError: 'str' object has no attribute 'feed'
Para los curiosos el XML es del 'proyecto OpenStreetMap s mapnik.
pregunta posiblemente relacionados: http://stackoverflow.com/questions/2524299/entity-references-and-lxml – unutbu
no relacionado, porque en ese caso la entidad está definido en realidad. Elimina la definición de la entidad y vuelves a mi pregunta. – Bryce
fyi - alguien puede querer arreglar el/usr/bin/python a/usr/bin/env python ya que la línea shebang es incorrecta para la mayoría de los sistemas. –