以编程方式获取节点nodeType列表(xml.dom.minidom.Node)

时间:2012-06-20 21:53:55

标签: python dom

所以我意识到文档中有Node类的节点类型列表,但是从一开始,我似乎无法找到一种方法以编程方式获取给定的nodeType列表节点对象(没有检查类,拉动每个所有大写成员的名称以'NODE'结尾,然后按值排序)。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

我希望有更好的东西,但缺乏这一点,我创建了一个新模块:

from xml.dom import Node
from collections import OrderedDict

if not hasattr(Node, 'get_all_node_types'):

    @classmethod
    def get_all_node_types(cls, refresh=False):

        if not hasattr(cls, '_type_dict') or refresh:
            unsorted_types = {getattr(cls, name) : name for name in dir(cls) if name.endswith('_NODE')}
            cls._type_dict = OrderedDict(sorted(unsorted_types.items(), key = lambda t : t[0]))
        return cls._type_dict

    setattr(Node, 'get_all_node_types', get_all_node_types)

这很hacky,所以我不喜欢它,但只要在程序执行期间至少导入一次,我就会得到我的新方法。