【发布时间】:2012-11-01 14:35:33
【问题描述】:
使用 lxml 我可以:
from lxml import etree
parser = etree.XMLParser(resolve_entities=False)
我可以对 xml.etree.ElementTree XMLParser 做同样的事情吗?
【问题讨论】:
标签: python lxml elementtree xml.etree
使用 lxml 我可以:
from lxml import etree
parser = etree.XMLParser(resolve_entities=False)
我可以对 xml.etree.ElementTree XMLParser 做同样的事情吗?
【问题讨论】:
标签: python lxml elementtree xml.etree
快速查看源代码会发现没有什么比resolve_entities=False 更简单了。
这是the source of xml.etree.ElementTree.XMLParser的摘录:
parser.DefaultHandlerExpand = self._default
parser.StartElementHandler = self._start
parser.EndElementHandler = self._end
parser.CharacterDataHandler = self._data
# optional callbacks
parser.CommentHandler = self._comment
parser.ProcessingInstructionHandler = self._pi
没有配置其他 pyexpat 处理程序。
现在,您对 & 或其他知名 XML 实体感兴趣吗?似乎未定义的实体正在通过XMLParser._default,因此您可以通过扩展该方法得到一些东西。
但是你想用这个来完成什么?如果这只是添加新实体,请尝试更新 XMLParser.entity 字典。
【讨论】:
parser = ElementTree.XMLParser(); parser.parser.UseForeignDTD(True); parser.entity['nbsp'] = ' ' 和类似的可能性