XML konfiguráky - jak je porovnat bez bolesti hlavy
XML mě trochu štve, ale musím uznat že ho pořád potkávám všude. Hlavně v Java a .NET projektech, kde se drží jako klíště. A porovnávat XML soubory je... zajímavé.
S jakými XML konfiguráky se potkávám
Nejčastěji řeším:
- Spring applicationContext.xml - ty beany a dependency injection
- Maven pom.xml - dependencies a build konfigurace
- .NET app.config/web.config - nastavení aplikace
- Android AndroidManifest.xml - permissions a komponenty
- Log4j/Logback XML - logování
Všechny mají společné to, že změna na špatném místě = hodiny debugování.
Proč je XML diff tak otravný
Normální textový diff ti ukáže každou blbost:
- Whitespace - přidáš mezeru a diff řve
- Pořadí elementů - někdy záleží, někdy ne (záleží na schematu)
- Namespace prefixy - můžeš mít různé prefixy pro stejný namespace
- Komentáře - občas chceš ignorovat, občas ne
- Atributy vs child elementy - sémanticky to samé, syntakticky jiné
Prostě chaos.
Jak to řeším já
Pro běžné rychlé porovnání:
- Formátuji oba soubory stejně (VS Code má to zkrášlení)
- Hodím do PorovnejText
- Koukám na rozdíly
Pro vážnější věci:
- XMLUnit (Java/.NET) - rozumí sémantice XML
- IDE pluginy - IntelliJ má slušný XML diff
- diff-xml-js - pro Node.js projekty
Sémantický vs textový diff
Textový diff - ukáže ti úplně všechno, včetně bílých znaků a pořadí. Hodí se když debuguješ formátovací problémy.
Sémantický diff - parsuje XML, porovnává DOM tree, ignoruje nesmysly. Tohle chceš pro code review.
Pro config review používám sémantický. Pro "proč sakra ten formatter změnil 500 řádků" textový.
Tipy z praxe
Version control:
- Normalizuj formátování - consistent indentace
- Seřaď elementy kde na pořadí nezáleží (Maven dependencies abecedně)
- Rozděl velké configy do menších souborů
- Komentuj PROČ něco měníš, ne co
Před deployem:
- Validuj proti schematu
- Testuj v runtime, ne jen syntaxi
- Kritické změny nejdřív na staging
V CI/CD
Máme pipeline, která automaticky porovnává config mezi prostředími. Když někdo omylem změní produkční config, hned to vidíme. Ušetřilo nám to už několik průserů.
Jo a logujeme config diff pro audit. Jednou se hodilo když se řešilo "kdo to změnil a kdy".
XML diff vyžaduje pochopení jak formátu, tak business logiky. Ale s trochou disciplíny to jde.
Potřebuješ rychle porovnat dva XML soubory? Hoď je do XML Diff nástroje a máš to za minutu.
Vyzkoušejte PorovnejText.cz zdarma
Nejrychlejší český nástroj pro porovnání textů. Vše probíhá ve vašem prohlížeči, žádná registrace není potřeba.
Porovnat texty nyní →Související články
Git diff mi nestačí - kdy a proč používám online diff
Jako programátor pracuju s git diff denně. Ale někdy potřebuju rychle porovnat dva kousky kódu a nechce se mi kvůli tomu otvírat IDE. Kdy použít co.
Markdown a README - jak kontroluju změny
Píšete dokumentaci v Markdownu? Tady je jak porovnávám změny v README a dalších md souborech.
Jak automatizuju changelog z Git commitů
Ruční psaní release notes mě nebavilo. Tady je jak jsem to automatizoval pomocí Conventional Commits.