I need to diff some XML files.
For these particular XML files, order is not important. The XML is being used to contain a set of things, not a list – the order of the elements has no significance. Similarly, the order of the attributes within each element isn’t significant.
For example, for my purposes, these two XML files are equivalent:
<myroot> <mychild id="123"> <fruit>apple</fruit> <test hello="world" brackets="angled" question="answers"/> <comment>This is a comment</comment> </mychild> <mychild id="456"> <fruit>banana</fruit> </mychild> <mychild id="789"> <fruit>orange</fruit> <test brackets="round" hello="greeting"> <number>111</number> </test> <dates> <modified>123</modified> <created>253</created> <accessed>44</accessed> </dates> </mychild> </myroot>
<myroot> <mychild id="789"> <fruit>orange</fruit> <test hello="greeting" brackets="round"> <number>111</number> </test> <dates> <accessed>44</accessed> <modified>123</modified> <created>253</created> </dates> </mychild> <mychild id="123"> <test question="answers" hello="world" brackets="angled"/> <comment>This is a comment</comment> <fruit>apple</fruit> </mychild> <mychild id="456"> <fruit>banana</fruit> </mychild> </myroot>
I needed to compare some large XML files, which have big differences in the order of elements, and I couldn’t find a tool that would do the job. So I wrote a bit of Python to do it for me.