python比較2個xml內(nèi)容的方法
更新時間:2015年05月11日 16:12:36 作者:像風(fēng)一樣的自由
這篇文章主要介紹了python比較2個xml內(nèi)容的方法,涉及Python操作XML文件的相關(guān)技巧,需要的朋友可以參考下
本文實例講述了python比較2個xml內(nèi)容的方法。分享給大家供大家參考。具體分析如下:
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
調(diào)用:
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程序設(shè)計有所幫助。
您可能感興趣的文章:
- Python高級應(yīng)用實例對比:高效計算大文件中的最長行的長度
- 使用Python的PIL模塊來進行圖片對比
- Python通過PIL獲取圖片主要顏色并和顏色庫進行對比的方法
- python比較兩個列表是否相等的方法
- Python比較兩個圖片相似度的方法
- python比較兩個列表大小的方法
- Python比較文件夾比另一同名文件夾多出的文件并復(fù)制出來的方法
- Python實現(xiàn)比較兩個文件夾中代碼變化的方法
- Python判斷文件和文件夾是否存在的方法
- Python列出一個文件夾及其子目錄的所有文件
- python遍歷文件夾并刪除特定格式文件的示例
- Python編程實現(xiàn)兩個文件夾里文件的對比功能示例【包含內(nèi)容的對比】
相關(guān)文章
解決Tensorflow sess.run導(dǎo)致的內(nèi)存溢出問題
今天小編就為大家分享一篇解決Tensorflow sess.run導(dǎo)致的內(nèi)存溢出問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python?pygame英雄循環(huán)飛行及作業(yè)示例
這篇文章主要為大家介紹了python?pygame英雄循環(huán)飛行及作業(yè)實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
PHP webshell檢查工具 python實現(xiàn)代碼
Web安全應(yīng)急響應(yīng)中,不免要檢查下服務(wù)器上是否被上傳了webshell,手工檢查比較慢,就寫了個腳本來檢查了。Windows平臺下已經(jīng)有了lake2寫的雷克圖的了,一般的檢查也夠用了,寫了個Linux下面的,用python寫的。2009-09-09
Python實現(xiàn)判斷一個字符串是否包含子串的方法總結(jié)
這篇文章主要介紹了Python實現(xiàn)判斷一個字符串是否包含子串的方法,結(jié)合實例形式總結(jié)分析了四種比較常用的字符串子串判定方法,需要的朋友可以參考下2017-11-11

