import xml.etree.ElementTree as ET import difflib import sys import pathlib def canon(path): tree = ET.parse(path) root = tree.getroot() for elem in root.iter(): elem.attrib.pop('ExportDate', None) # sort attributes if elem.attrib: items = sorted(elem.attrib.items()) elem.attrib.clear() elem.attrib.update(items) return ET.tostring(root, encoding='unicode').splitlines() a = canon(sys.argv[1]) b = canon(sys.argv[2]) for l in difflib.unified_diff(a,b, lineterm=''): print(l)