Porovnání XML souborů online

Porovnání XML souborů zdarma

Konfigurák se rozbil a nevíte proč? Sem s oběma verzemi - najdu i tu nejmenší změnu v atributech.

1 řádek0 znaků
1 řádek0 znaků
Možnosti porovnání

Tip: Použijte Ctrl+Enter pro rychlé porovnání

Praktické využití

ScénářPříklady souborů
DevOps & konfiguraceweb.config, pom.xml, build.xml, persistence.xml
Mobilní vývojAndroidManifest.xml, Info.plist, *.xib soubory
Enterprise integraceSOAP odpovědi, WSDL definice, XSD schémata
SEO & websitemap.xml, RSS/Atom feedy, XHTML stránky
GrafikaSVG soubory, Office dokumenty (interní XML)

XML potřebuje speciální přístup

Obyčejný textový diff nezná strukturu. Tohle ano.

Hierarchie elementů

Vidíte strukturu jako strom. Rozbalíte rodiče, vidíte děti. Změna vnořeného elementu je jasně označená v kontextu celé cesty.

Atributy pod kontrolou

Změna value="true" navalue="false" je hned vidět. Neztratí se mezi ostatními změnami.

Validace při vložení

Jestli máte neuzavřený tag nebo špatný znak, dozvíte se to hned. S číslem řádku a popisem problému.

Jak na to?

1

Připravte si dva XML soubory

Konfigurák, SOAP odpověď, RSS feed, sitemap - cokoliv v XML. Může to být i HTML nebo XHTML.

2

Vložte do editorů

Vlevo původní, vpravo nová verze. Můžete přetáhnout soubory nebo Ctrl+V.

3

Prohlédněte si rozdíly ve stromu

Elementy jsou pěkně pod sebou, dají se rozbalovat. Vidíte co se změnilo v atributech i hodnotách.

Ukázka: Změna v konfiguraci

Typický případ - něco nefunguje a potřebuju zjistit co se změnilo v konfigu. Třeba tenhle web.config:

Původní verze

<configuration>
  <appSettings>
    <add key="Debug" value="true"/>
    <add key="Timeout" value="30"/>
  </appSettings>
</configuration>

Nová verze

<configuration>
  <appSettings>
    <add key="Debug" value="false"/>
    <add key="Timeout" value="60"/>
    <add key="CacheEnabled" value="true"/>
  </appSettings>
</configuration>

Co hned vidím:

  • Změna: Debug se přepnul z true na false (to je asi ten problém!)
  • Změna: Timeout se zvýšil z 30 na 60 sekund
  • Novinka: Přibyl CacheEnabled parametr

Technické dotazy

Umíš ignorovat namespace prefixy?

Ano, v nastavení můžete zapnout ignorování jmenných prostorů. Užitečné když porovnáváte SOAP odpovědi z různých prostředí kde se prefixy liší.

Co když mám neformátovaný XML?

Minifikovaný XML na jednom řádku? Funguje. Interně ho zparsuju a porovnám strukturálně. Na zobrazení ho pak můžu naformátovat pro přehlednost.

Jak velký pom.xml nebo web.config to zvládne?

Běžné konfigurační soubory bez problémů. Mám testované projekty se stovkami dependencies. Opravdu velké (megabajty) mohou chvíli trvat - záleží na vašem prohlížeči.

Můžu sem dát produkční konfiguraci?

Celé zpracování běží lokálně v JavaScriptu. XML nikam neodesílám, neukládám, nemám přístup k vašim datům. I citlivé konfigurace jsou bezpečné.

📚

Víc o XML porovnávání

Na blogu mám článek o porovnávání XML konfiguráků - jak hledat změny, co dělat s jmennými prostory, a pár tipů z praxe.

Přečíst článek o XML konfiguracích

Příběh z produkce

Pátek odpoledne, produkce padá. Web.config se někde změnil a nikdo neví kde. Git historie? 50 commitů. Projít ručně? Hodiny práce.

Vzal jsem funkční zálohu, aktuální verzi a hodil je sem. Za 10 sekund jsem věděl: někdo změnil connection timeout z 30 na 3 sekundy. Překlep. Oprava trvala minutu.

Od té doby tohle používám na všechny XML konfiguráky - pom.xml v Mavenu, build.xml v Antu, AndroidManifest.xml. Strukturální porovnání je rychlejší než pročítání textového diffu.

Detailnější návody píšu na blogu, třeba jak efektivně debugovat konfigurační problémy.