Suporte ao Python ElementTree para analisar entidades XML desconhecidas?
Eu tenho um conjunto de arquivos XML super simples para analisar ... mas ... eles usam entidades definidas personalizadas. Não preciso mapeá-las para caracteres, mas desejo analisar e agir sobre cada uma delas. Por exemplo
<Style name="admin-5678">
<Rule>
<Filter>[admin_level]='5'</Filter>
&maxscale_zoom11;
</Rule>
</Style>
Existe uma dica tentadora emhttp: //effbot.org/elementtree/elementtree-xmlparser.ht o XMLParser tem suporte limitado a entidades, mas não consigo encontrar os métodos mencionados, tudo gera erros:
#!/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
Dependendo de como você ajusta os comentários, obtém:
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 aqueles curiosos, o XML é do OpenStreetMaprojeto mapnik de @.