我想比较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 ... 如何仅比较树结构而不是值?
答案 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