【问题标题】:Extending functionality of Element and ElementTree扩展 Element 和 ElementTree 的功能
【发布时间】:2016-09-11 08:57:27
【问题描述】:

我想从xml.etree 扩展ElementElementTree 类的功能并将它们与xml.etree.ElementTree.parse() 一起使用。

经过几次尝试,我已经设法为这个问题创建了一个解决方案,但我想知道是否有更好的解决方案,或者这个解决方案是否有任何隐患。

FooElementTree.py

import xml.etree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import ElementTree

class FooElement(Element):
    def __repr__(self):
        return "<FooElement %s at 0x%x>" % (repr(self.tag), id(self))

class FooElementTree(ElementTree):
    pass

xml.etree.ElementTree.Element = FooElement
xml.etree.ElementTree.ElementTree = FooElementTree
from xml.etree.ElementTree import parse

用法:

>>> import FooElementTree
>>> e = FooElementTree.parse('xml.cfg')
>>> e
<FooElementTree.FooElementTree object at 0x023AB650>
>>> r = e.getroot()
>>> r
<FooElement 'configuration' at 0x23c5470>

【问题讨论】:

    标签: python xml.etree


    【解决方案1】:

    这就是热补丁工作的方式。但请注意,必须在导入任何其他也使用 ElementTree 的模块(或子模块)之前应用补丁。

    【讨论】:

    • 这仍然是python3的有效解决方案吗?
    猜你喜欢
    • 2020-04-28
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2022-01-09
    相关资源
    最近更新 更多