我有一組超級簡單的XML文件來解析...但是...他們使用自定義的實體。我不需要將這些映射到角色,但我希望解析並針對每個角色進行操作。例如:Python ElementTree支持解析未知的XML實體嗎?
<Style name="admin-5678">
<Rule>
<Filter>[admin_level]='5'</Filter>
&maxscale_zoom11;
</Rule>
</Style>
有一個在http://effbot.org/elementtree/elementtree-xmlparser.htm一個誘人的暗示,XMLParser的有限實體的支持,但我找不到提到的方法,一切都給人錯誤:這取決於你如何
#!/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
調整的意見,得出:
xml.etree.ElementTree.ParseError: undefined entity: line 1, column 5
或
AttributeError: 'ElementTree' object has no attribute 'entity'
或
AttributeError: 'str' object has no attribute 'feed'
對於那些好奇的XML是從OpenStreetMap的Mapnik的項目。
可能相關的問題:http://stackoverflow.com/questions/2524299/entity-references-and-lxml – unutbu
沒有關係的,因爲在這種情況下,實體實際上是定義。刪除實體定義,你回到我的問題。 – Bryce
fyi - 有人可能希望將/ usr/bin/python修復爲/ usr/bin/env python,因爲大多數系統的shebang行都是錯誤的。 –