gpt4 book ai didi

Python ElementTree 重复检查器

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:46 24 4
gpt4 key购买 nike

所以我必须编写一个“重复检查器”来比较两个 XML,看看它们是否相同(包含相同的数据)。现在因为它们来自同一个类并且是从 XSD 结构中生成的,所以内部元素的顺序很可能是相同的。

我能想到的进行重复检查的最佳方法是设置两个字典(dictLeft、dictRight)并将 xpath#value 保存为键和它出现的次数。像这样:

左:

{ 'my/path/to/name#greg': 1, 'my/path/to/name#john': 2, 'my/path/to/car#toyota': 1}

{ 'my/path/to/name#greg': 1, 'my/path/to/name#bill': 1, 'my/path/to/car#toyota': 1}

比较这两个词典会给我一个相当准确的指示,表明这两个 XML 是否相同(我可能会得到错误的结果,但概率很小)。

还有其他人有更好的主意吗?可能是 ElementTree 中我不知道的函数?

编辑:为了更好地解释:

<root><person><name>Bob</name><surname>marley</surname></root>

<root><person><surname>marley</surname><name>Bob</name></root>

会被认为是相同的。我忽略了属性。我们的想法是让代码尽可能简单,同时又不会过多地影响性能。

最佳答案

好吧,所以我必须做出决定并继续这样做:

foreach path in xpathlist
find entries for path for both xml1 and xml2
foreach entry in xmlentries1
dict1[path#entry.value]++
foreach entry in xmlentries2
dict2[path#entry.value]++

if dict1 and dict2 are not equal
return false
return true

我希望这是有道理的。这允许我测试特定/所有 xpath。如果有人有更好的算法,我会洗耳恭听:)

关于Python ElementTree 重复检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com