Ir para o conteúdo

xmldiffreport

PyPI version Python versions License: MIT

Diff estrutural e semântico de XML, N-way, que produz relatórios em Markdown legíveis — guiado por recipes por dialecto.

O xmldiffreport compara dois ou mais ficheiros XML ao mesmo tempo — exports BMC Control-M, POMs Maven, relatórios JUnit/xUnit, sitemaps, ou qualquer dialecto que lhe ensines com uma recipe — e diz-te o que mudou de facto, elemento a elemento, atributo a atributo, em vez de um diff de texto linha-a-linha ruidoso. Alinha os elementos por uma chave natural (não pela posição), ignora atributos voláteis e escreve um relatório Markdown limpo.

Nasceu para detetar diferenças entre patches de jobs BMC Control-M ao longo de test → uat → bench → prod, e generalizou-se num motor guiado por recipes que funciona com qualquer dialecto XML (exports Control-M, POMs Maven, relatórios JUnit, sitemaps, …).

Quickstart

pip install xmldiffreport
# Comparar dois (ou mais) ficheiros XML — usa a recipe generic por omissão
xmldiffreport old.xml new.xml -o report.md
from xmldiffreport import diff

result = diff(["old.xml", "new.xml"], recipe="sitemap")   # um ficheiro, vários, ou dir(s)
print(result.render())                                    # Markdown — ou .render("html")

Porquê não um diff normal?

Um diff de texto sobre XML mente — atributos voláteis (VERSION, CREATION_TIME, JOBISN), filhos reordenados e a ordem dos atributos criam falsas diferenças. O xmldiffreport é estrutural, N-way (3+ ficheiros de uma vez) e gera um relatório pronto a rever.

Próximos passos