我多年来一直使用minidom解析XML。现在我突然了解了Element Tree。我的问题是更好进行解析?那就是:
为什么我们有两个接口?
感谢。
答案 0 :(得分:19)
用于XML解析的DOM和Sax接口是使用XML的经典方法。 Python必须提供这些接口,因为它们是众所周知的标准。
ElementTree包旨在提供更多的Pythonic界面。这一切都是为了让程序员更轻松。
根据您的构建,每个构建都有一个基础C实现,使它们运行得很快。
以上所有工具均未被弃用。它们各有其优点(例如,Sax不需要将整个输入读入内存)。
还有一个名为lxml的第三方模块,它也是一个受欢迎的选择(全功能和快速)。
答案 1 :(得分:14)
如果您关心速度,还有lxml,它使用libxml2构建一个与ElementTree兼容的DOM,应该非常快 - 他们有一个基准套件,将自己与ElementTree的Python和C实现相比较。
如果你担心内存使用,你不应该使用树API; PullDOM可能是一个更好的选择,但我从使用Java优秀的pull解析器的经验中推断 - 在PullDOM上似乎没有太多当前信息。