有谁知道如何在Python中获取XML文件的DOM实例(树).我试图将两个XML文档相互比较,这些文档可能具有不同顺序的元素和属性.我该怎么做?
就我个人而言,只要有可能,我都会从elementtree开始(最好是 Python 标准库附带的 C 实现,或lxml实现,但这本质上只是一个更高的速度问题)。它不是一个符合标准的 DOM,但以更 Pythonic 和更方便的方式保存相同的信息。您可以首先调用xml.etree.ElementTree.parse,它获取 XML 源并返回一个元素树;在两个源上执行此操作,使用getroot每个元素树来获取其根元素,然后从根元素开始递归比较元素。
元素的子元素在元素树中形成一个序列,就像在标准 DOM 中一样,这意味着它们的顺序很重要;但很容易用它们来制作 Python 集(或者,如果重复在你的用例中很重要,但顺序并不重要,那么可以多花点功夫制作某种类型的“多集”)以进行更宽松的比较。对于给定元素的属性来说甚至更容易,其中保证了唯一性并且顺序在语义上不相关。
是否有某些特定原因需要标准 DOM 而不是像元素树这样的替代容器,或者您只是在一般意义上使用术语 DOM,以便元素树就可以了?
过去,我使用PyRXP也取得了很好的结果,它使用比 ElementTree 更鲜明、更简单的表示形式。然而,那是很多年前的事了;我最近没有将 PyRXP 与 lxml 或 cElementTree 进行比较的经验。
| 归档时间: |
|
| 查看次数: |
1716 次 |
| 最近记录: |