python比较2个xml内容的方法
2015-05-11 16:12
435 查看
本文实例讲述了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 = '''''<?xml version="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 = '''''<?xml version="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高级应用实例对比:高效计算大文件中的最长行的长度
- 使用Python的PIL模块来进行图片对比
- Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
- python比较两个列表是否相等的方法
- Python比较两个图片相似度的方法
- python比较两个列表大小的方法
- Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
- Python实现比较两个文件夹中代码变化的方法
- Python判断文件和文件夹是否存在的方法
- Python列出一个文件夹及其子目录的所有文件
- python遍历文件夹并删除特定格式文件的示例
- Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
相关文章推荐
- python比较2个xml内容的方法
- python比较2个xml内容
- 比较2个DataTable中的内容是否相同的方法
- 比较2个DataTable中的内容是否相同的方法
- 详解在Python程序中解析并修改XML内容的方法
- 详解在Python程序中解析并修改XML内容的方法
- 详解在 Python 中解析并修改XML内容的方法
- Python实现提取XML内容并保存到Excel中的方法
- 详解在 Python 中解析并修改XML内容的方法
- Python比较2个时间大小的实现方法
- PHP XML操作的各种方法解析(比较详细)
- python计算文件的行数和读取某一行内容的实现方法
- XML的命名空间与python解析方法
- Python web(6)-静态方法和类方法的比较
- 解析xml的几种方法,他们的原理,比较 以及JAVA源码
- 笨方法学python 习题27(逻辑之前的内容)习题28(布尔)29、30、31
- Python学习笔记 --- 程序退出方法比较
- python 七种邮件内容发送方法实例
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)