Python XML比较Tree的

时间:2016-03-08 08:05:59

标签: python xml tree compare lxml

我想比较2个XML文件的XML树结构:

文件1:

<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?><DATA>
   <Time>2016-02-13T00:05:00.531Z</Time>
   <Item>
      <ID>888555444</ID>
      <VAR1>ABCD_MKLS8866dee6</VAR1>
   </Item>
   <Check>FAILED</Check>
</DATA>

文件2:

from lxml import etree

tree1 = etree.parse('file1.xml')
tree2 = etree.parse('file2.xml')

print(tree1.getroot())
print(tree2.getroot())

print set(tree1.getroot()) == set(tree2.getroot())

我的代码:

{{1}}

当我比较它们时,结果== false。结果应该是== true ... 如何仅比较树结构而不是值?

1 个答案:

答案 0 :(得分:0)

为什么它们不等同是个好问题。我必须自己查一下。但是,如果使用.iter()展平树,则可以比较列表等效性 - 以下示例为了清晰起见是详细的:

from lxml import etree

xml_1 = '<tag1><tag2></tag2></tag1>'
xml_2 = '<tag1><tag2></tag2></tag1>'

xml_1_parsed = etree.fromstring(xml_1)
xml_2_parsed = etree.fromstring(xml_2)

xml_1_flattened = [i.tag for i in xml_1_parsed.iter()]
xml_2_flattened = [i.tag for i in xml_2_parsed.iter()]

print xml_1_flattened == xml_2_flattened