测试 xml.etree.ElementTree 的等价性

新手上路,请多包涵

我对两个 xml 元素的等价性感兴趣;而且我发现测试元素的 tostring 有效;但是,这似乎很老套。

有没有更好的方法来测试两个 etree 元素的等价性?

直接比较元素:

 import xml.etree.ElementTree as etree
h1 = etree.Element('hat',{'color':'red'})
h2 = etree.Element('hat',{'color':'red'})

h1 == h2  # False

将元素作为字符串进行比较:

 etree.tostring(h1) == etree.tostring(h2)  # True

原文由 oneporter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 383
1 个回答

这个比较功能对我有用:

 def elements_equal(e1, e2):
    if e1.tag != e2.tag: return False
    if e1.text != e2.text: return False
    if e1.tail != e2.tail: return False
    if e1.attrib != e2.attrib: return False
    if len(e1) != len(e2): return False
    return all(elements_equal(c1, c2) for c1, c2 in zip(e1, e2))

原文由 Itamar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题