xml.dom与xml.dom.minidom的优缺点

-1 投票
1 回答
1185 浏览
提问于 2025-04-18 03:46

我正在尝试用Python写一个XML处理器,开始时参考了一个教程里的示例代码,这段代码使用了xml.dom.minidom,它提供了一个很方便的解析方法xml.dom.minidom.parse()。

文档上似乎说minidom比完整的DOM简单且小巧。那么使用这两者各自的优缺点是什么呢?

我注意到,我不能简单地把导入的xml.dom.minidom换成xml.dom,然后期待示例代码能正常工作。比如,xml.dom.parse()这个方法就不行,报错信息是“AttributeError: 'module' object has no attribute 'parse'”。那么在xml.dom中,哪个方法是等效的解析方法呢?

我想做的是遍历xml.dom.minidom.parse()给我的树,查看每个节点的所有属性和对象,看看我需要处理的XML文件在DOM树中是如何表示的。但是,像访问与.nodeType对应的常量(例如在xml.dom文档中定义的ELEMENT_NODE)这样简单的事情,在运行时却给我报了“未定义”的错误。

如果有人能给我指个方向,我会非常感激。谢谢。

1 个回答

1

xml.dom 其实并不是一个完整的DOM实现;它只是用Python的方式让你可以访问DOM接口,包括通过 getDOMImplementation() 函数部分实现的 Level 3 DomImplementationSource 接口

在标准库中,唯一提供的实现是 xml.dom.minidom

ELEMENT_NODE 和其他常量是 Node 接口 IDL 的一部分:

>>> import xml.dom
>>> xml.dom.Node.ELEMENT_NODE
1

XML DOM 是一个相对来说比较僵化和古老的API,设计时考虑的编程语言灵活性较低。你可能更想使用 ElementTree API。这个API在标准库中有实现,或者你可以安装 lxml 来获得更多功能。

撰写回答