python比较2个xml内容的方法

发布于 2015-10-04 17:26:38 | 145 次阅读 | 评论: 0 | 来源: 网友投递

Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

这篇文章主要介绍了python比较2个xml内容的方法,涉及Python操作XML文件的相关技巧,需要的朋友可以参考下

本文实例讲述了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

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"?>

linux

30

windows

20

'''

s2 = '''''<?xml version="1.0" encoding="UTF-8"?>

windows

20

linux

30

'''

lroot = ElementTree.fromstring(s1)

rroot = ElementTree.fromstring(s2)

compare_xml(lroot, rroot)

相关阅读:

python比较2个xml内容的方法

python比较两个列表大小的方法

详解在Python程序中解析并修改XML内容的方法

python使用htmllib分析网页内容的方法

python使用nntp读取新闻组内容的方法

Python批量修改文本文件内容的方法

浅谈Python实现2种文件复制的方法

Python比较两个图片相似度的方法

python比较两个列表是否相等的方法

python逐行读取文件内容的三种方法

python通过urllib2获取带有中文参数url内容的方法

在Python中使用CasperJS获取JS渲染生成的HTML内容的方法

python比较两个xml_python比较2个xml内容的方法相关推荐

  1. python列表去重函数_对python中两种列表元素去重函数性能的比较方法

    测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import t ...

  2. python输出文本框_python TKinter获取文本框内容的方法

    python TKinter获取文本框内容的方法 如下所示: #coding:utf-8 import urllib,urllib2 import Tkinter #导入TKinter模块 ytm=T ...

  3. python 法律检索_Python基于正则表达式实现检查文件内容的方法【文件检索】

    本文实例讲述了Python基于正则表达式实现检查文件内容的方法分享给大家供大家参考,具体如下: 这个是之前就在学python,欣赏python的小巧但是功能强大,是连电池都自带的语言.平时工作中用Ja ...

  4. python求两数最大公因数_Python求两个数的最大公约数

    Python求两个数的最大公约数 一.求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. ...

  5. Python中将两个列表数据zip起来并遍历(Iterating through two lists in parallel)

    Python中将两个列表数据zip起来并遍历(Iterating through two lists in parallel) 目录 Python中将两个列表数据zip起来并遍历(Iterating ...

  6. Python中将两个列表(list)数据zip起来

    Python中将两个列表(list)数据zip起来 目录 Python中将两个列表(list)数据zip起来

  7. Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序、获取交集元素及其索引、如果输入数组不是一维的,它们将被展平(flatten),然后计算交集

    Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序.获取交集元素及其索引.如果输入数组不是一维的,它们将被展平(flatten),然后计算交集 目录

  8. Python判断两个文件夹中互相不同的文件有哪些、判断一个文件夹相对于另外一个文件夹缺少了哪些文件

    Python判断两个文件夹中互相不同的文件有哪些.判断一个文件夹相对于另外一个文件夹缺少了哪些文件 目录 Python判断两个文件夹中互相不同的文件有哪些.判断一个文件夹相对于另外一个文件夹缺少了哪些 ...

  9. Python将两个图像合并成一个图像(横向合并)

    Python将两个图像合并成一个图像(横向合并) 目录 Python将两个图像合并成一个图像(横向合并) #原始图像

最新文章

  1. STL 队列queue
  2. SAP MM 不常用事务代码之MB59
  3. python中使用函数编程的意义_总结Python编程中函数的使用要点
  4. mysql里面的sql_mysql工作中的sql
  5. docker-machine
  6. 全面拥抱HDR时机已到?
  7. ajax实现浏览器前进后退-location.hash与模拟iframe
  8. GPUimage 遇到的崩溃及问题
  9. 071120 sunny
  10. 通过函数指针实现四则运算
  11. vuex模块化配合vue-router全局路由守卫做登陆权限控制
  12. 可视化编辑json数据——json editor
  13. 【python做简单的数据分析、绘图】
  14. 导数的四则运算法则_【数学】求导的方法之四则运算法则
  15. wps 2003 给WPS设置保护眼睛的淡绿色呢?
  16. leetcode954.二倍数对数组C++(绝对值排序)
  17. proto—go语言生成代码参考(Generated-code reference中文翻译)
  18. 数学建模:回归分析——regress 函数
  19. 40个笑到抽筋的神回复,绝了!
  20. 调焦距离S远近与景深之关系

热门文章

  1. mysql 2014_mysql错误之2014
  2. Drug Target Review | 超越表型:基于AI更好地了解疾病
  3. OpenCV | ORB特征检测与描述
  4. linux 登录 忘记密码,redhat linux忘记登陆密码之解决办法
  5. python源文件保存在哪里_python数据爬下来保存在哪里
  6. 在线作图丨数据降维方法⑥——消除趋势对应分析(Detrended correspondence analysis, DCA)
  7. 在线作图丨高级的微生物分析——在线做Variance Partitioning Analysis(VPA分析)
  8. 专属于教育界的定律,你知道哪一些?
  9. 今年1篇Science,2篇NBT,2篇MP,1篇PNAS等11篇文章,遗传发育所白洋组在植物微生物组取得系列进展!
  10. 最前沿的科学, 寻找最聪明的你—“宏基因组”公众号编辑招募