【问题标题】:Can I disable entities resolving in ElementTree XMLParser?我可以在 ElementTree XMLParser 中禁用实体解析吗?
【发布时间】: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


    【解决方案1】:

    快速查看源代码会发现没有什么比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 字典。

    【讨论】:

    • 我想避免在我提供脚本的潜在 XHTML 文件中使用 parser = ElementTree.XMLParser(); parser.parser.UseForeignDTD(True); parser.entity['nbsp'] = ' ' 和类似的可能性
    • 哦,所以你已经有了解决方案:/ 那么不,恐怕没有比这更简单的了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2019-01-26
    • 2012-03-25
    • 2015-11-19
    • 2014-02-14
    相关资源
    最近更新 更多