您的位置:首页 > 房产 > 建筑 > 网站建设哪里实惠_网站模板免费网盘_百度快速收录教程_cpm广告联盟平台

网站建设哪里实惠_网站模板免费网盘_百度快速收录教程_cpm广告联盟平台

2024/12/23 4:51:42 来源:https://blog.csdn.net/m0_73230228/article/details/143758038  浏览:    关键词:网站建设哪里实惠_网站模板免费网盘_百度快速收录教程_cpm广告联盟平台
网站建设哪里实惠_网站模板免费网盘_百度快速收录教程_cpm广告联盟平台

import xml.etree.ElementTree as ET

def find_diff(elem1, elem2, path=""):
    """递归查找两个Element对象的差异"""
    diff = []
    # 比较元素的标签
    if elem1.tag != elem2.tag:
        diff.append(f"{path}: tag differs - {elem1.tag} != {elem2.tag}")
    # 比较元素的属性
    for attr in set(elem1.attrib) | set(elem2.attrib):
        if elem1.attrib.get(attr) != elem2.attrib.get(attr):
            diff.append(f"{path}@{attr}: attribute differs - {elem1.attrib.get(attr)} != {elem2.attrib.get(attr)}")
    # 比较元素的文本内容
    if elem1.text and elem2.text and elem1.text.strip() != elem2.text.strip():
        diff.append(f"{path}: text differs - {elem1.text.strip()} != {elem2.text.strip()}")
    # 递归比较子元素
    for child1, child2 in zip(elem1, elem2):
        diff.extend(find_diff(child1, child2, path + "/" + elem1.tag))
    # 检查是否有额外的子元素
    if len(elem1) > len(elem2):
        for extra in elem1[len(elem2):]:
            diff.append(f"{path}/{elem1.tag}: extra element - {extra.tag}")
    elif len(elem2) > len(elem1):
        for extra in elem2[len(elem1):]:
            diff.append(f"{path}/{elem2.tag}: extra element - {extra.tag}")
    return diff

def compare_xml_files(file1, file2):
    """比较两个XML文件并打印差异"""
    tree1 = ET.parse(file1)
    tree2 = ET.parse(file2)
    
    root1 = tree1.getroot()
    root2 = tree2.getroot()
    
    # 查找并打印差异
    diff = find_diff(root1, root2)
    for d in diff:
        print(d)

# 使用示例
file1 = 'file1.xml'
file2 = 'file2.xml'
compare_xml_files(file1, file2)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com