xml.dom与xml.dom.minidom的优缺点
我正在尝试用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 个回答
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
来获得更多功能。