明霞山资源网 Design By www.htccd.com
本文实例讲述了python比较2个xml内容的方法。分享给大家供大家参考。具体分析如下:
from xml.etree import ElementTree
OK=True
main_pid = 10000
loop_depth = 0
def compare_xml(left, right, key_info='.'):
global loop_depth
loop_depth += 1
if loop_depth == 1: print
if left.tag != right.tag:
print_diff(main_pid, key_info, 'difftag', left.tag, right.tag)
return
if left.text != right.text:
print_diff(main_pid, key_info, 'difftext', left.text, right.text)
return
leftitems = dict(left.items())
rightitems = dict(right.items())
for k,v in leftitems.items():
if k not in rightitems:
s = '%s/%s' % (key_info, left.tag)
print_diff(main_pid, s, 'lostattr', k, "")
for k,v in rightitems.items():
if k not in leftitems:
s = '%s/%s' % (key_info, right.tag)
print_diff(main_pid, s, 'extraattr', "", k)
leftnodes = left.getchildren()
rightnodes = right.getchildren()
leftlen = len(leftnodes)
rightlen = len(rightnodes)
if leftlen != rightlen:
s = '%s/%s' % (key_info, right.tag)
print_diff(main_pid, s, 'difflen', leftlen, rightlen)
return
l = leftlen<rightlen and leftlen or rightlen
d = {}
for i in xrange(l):
node=leftnodes[i]
if node.tag not in d:
d[node.tag] = 1
tag = node.tag
else:
tag = node.tag + str(d[node.tag])
d[node.tag] += 1
s = '%s/%s' % (key_info, tag)
compare_xml(leftnodes[i], rightnodes[i], s)
def print_diff(main_pid, key_info, msg, base_type, test_type):
global OK
info = u'[ %-5s ] %s -> %-40s [ %s != %s ]'%(msg.upper(), main_pid, key_info.strip('./'), base_type, test_type)
print info.encode('gbk')
OK = False
调用:
if __name__ == '__main__':
s1 = '''''<"1.0" encoding="UTF-8"?> <employees> \
<employee id = '1'> \
<name>linux</name>\
<age>30</age>\
</employee>\
<employee id = '2'> \
<name>windows</name>\
<age>20</age>\
</employee>\
</employees>'''
s2 = '''''<"1.0" encoding="UTF-8"?> <employees> \
<employee id = '3'> \
<name>windows</name>\
<age>20</age>\
</employee>\
<employee id = '4'> \
<name>linux</name>\
<age>30</age>\
</employee>\
</employees>'''
lroot = ElementTree.fromstring(s1)
rroot = ElementTree.fromstring(s2)
compare_xml(lroot, rroot)
希望本文所述对大家的Python程序设计有所帮助。
标签:
python,比较,xml内容
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。