Formátovat a odsadit XML
- Dashboard
- Dokumentace
- API
Proč formátovat XML?
XML formátování (také nazývané XML pretty print nebo XML indentace) spočívá v reorganizaci kompaktního nebo minifikovaného XML dokumentu do indentované, čitelné struktury řádek po řádku. Dobře formátované XML zlepšuje lidskou čitelnost, což je nezbytné při čtení SOAP odpovědi, procházení RSS feedu nebo inspekci obsahu konfiguračního souboru.
Konkrétně se XML formátuje ze čtyř hlavních důvodů:
- Debug: rychle identifikovat nezavřený tag, chybějící atribut nebo nekonzistentní strukturu.
- Manuální integrace: čistě zkopírovat fragment do konfiguračního souboru bez rozbití existující indentace.
- Code review: porovnat dvě verze XML dokumentu v Git diffu se stává čitelným, když je každý tag na vlastním řádku.
- Dokumentace a příklady: formátované XML je mnohem pedagogičtější v technické dokumentaci nebo README.
Typické případy použití
XML zůstává všudypřítomné v softwarovém ekosystému. Zde jsou formáty, na kterých developeři nejčastěji používají XML formátor:
- SOAP odpovědi:
<soap:Envelope>obálky vrácené SOAP webovými službami obvykle přicházejí minifikované. - RSS a Atom feedy: pro inspekci nebo audit syndication feedu.
- Spring, Maven (
pom.xml), Ant, Ivy konfigurace: build soubory a Java dependencies. AndroidManifest.xmla další XML resource Android projektu.- SVG soubory: vektorový grafik exportovaný z designového softwaru je často komprimovaný na jeden řádek.
- E-commerce exporty: Google Shopping produktové feedy, Magento, Shopify nebo PrestaShop exporty.
- OOXML dokumenty:
.docx,.xlsxa.pptxsoubory jsou ZIP archivy obsahující XML soubory, které je často třeba inspekovat. - XML sitemapy:
sitemap.xmlservírovaná vyhledávačům.
Jak funguje XML formátování
XML formátor se nespokojuje s přidáváním mezer náhodně. Provádí dva kroky:
- Parsing: dokument je čten a pak transformován do DOM stromu (Document Object Model). Tato fáze také validuje, že je XML dobře tvarován (správně vnořené tagy, atributy v uvozovkách, jediný root element).
- Indentovaná serializace: DOM strom je znovu emitován jako text se zalomeními řádků mezi elementy a indentací proporcionální k hloubce ve stromě.
Tento stromový přístup garantuje, že logická struktura dokumentu zůstává striktně identická: modifikovány jsou pouze nesignifikantní mezery mezi tagy. CDATA sekce, komentáře a zpracovatelské instrukce jsou zachovány. Pokročilejší transformace (XSLT) nebo queries (XPath) ostatně operují na stejném DOM stromu.
Jak používat XML formátor
Procedura je záměrně jednoduchá:
- Vložte svůj XML dokument do textové oblasti, nebo nahrajte
.xmlsoubor. - Validujte formulář: dokument je analyzován a automaticky indentován.
- Formátovaný výsledek se objeví v oblasti výstupu. V případě chyby parsingu zpráva indikuje povahu a přibližnou pozici problému.
- Zkopírujte výsledek věnovaným tlačítkem, nebo ho stáhněte pro přímou integraci do vašeho projektu.
Osvědčené postupy XML indentace
Několik konvencí k respektování pro produkci čistého a trvanlivého XML:
- Indentace: 2 nebo 4 mezery podle konvence vašeho týmu. Zůstaňte konzistentní v celém projektu.
- Zalomení řádků: jeden element na řádek, což činí Git diffy využitelnými.
- CDATA sekce: dobrý formátor integrálně zachovává
<![CDATA[ ... ]]>bloky bez reindentování jejich obsahu, který je ošetřen jako surový text. - Kódování: vždy deklarujte kódování na prvním řádku s
<?xml version="1.0" encoding="UTF-8"?>. UTF-8 je de facto standard. - Atributy: pokud má element mnoho atributů, některé týmy je dávají na nový řádek pro čitelnost; jinak zůstávají na stejném řádku s otevíracím tagem.
- Komentáře:
<!-- ... -->musí být formátorem zachovány jak jsou.
Příklad před / po
Zde je konkrétní příklad kompaktního XML zkrášleného formátorem.
Před (jeden řádek, nečitelné):
<root><item id="1">val</item><item id="2">val2</item></root>
Po (formátováno s 2 mezerami):
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="1">val</item>
<item id="2">val2</item>
</root>
Logická struktura je striktně identická: mění se pouze vizuální uspořádání.
Kompletní příklad
Objemnější XML dokument po formátování vypadá takto:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<user id="12345">
<name>John Doe</name>
<email>johndoe@example.com</email>
<address>
<street>123 Main St</street>
<city>Springfield</city>
<state>IL</state>
<postalCode>62704</postalCode>
<country>USA</country>
</address>
<phoneNumbers>
<phoneNumber type="home">555-1234</phoneNumber>
<phoneNumber type="work">555-5678</phoneNumber>
</phoneNumbers>
<preferences>
<newsletter>true</newsletter>
<theme>dark</theme>
</preferences>
<lastLogin>2024-06-14T09:30:00Z</lastLogin>
</user>
</root>
Často kladené otázky
Co je dobře tvarované XML?
XML je řečeno dobře tvarované (well-formed), když respektuje základní syntaktická pravidla: jediný root element, správně vnořené a zavřené tagy, atributy v uvozovkách, escapované speciální znaky (&, <, >). Je to předpoklad pro možnost parsing dokumentu. Nezaměňovat s validním XML, které navíc respektuje XSD schéma nebo DTD.
Jaký je rozdíl mezi formátováním (pretty print) a XML minifikací?
Pretty print přidává zalomení řádků a indentaci pro lidské čtení. Minifikace dělá opak: odstraňuje všechny nesignifikantní mezery pro snížení velikosti dokumentu, což je užitečné pro síťový tranzit (SOAP odpovědi, XML API). Oba dokumenty jsou sémanticky ekvivalentní.
Jsou komentáře a CDATA sekce při formátování zachovány?
Ano. Správný formátor zachovává komentáře <!-- ... -->, <![CDATA[ ... ]]> sekce stejně jako zpracovatelské instrukce (<? ... ?>). Obsah CDATA zůstává nedotčen bez reindentování, protože je ošetřen jako surový text. Ověřte výsledek, pokud mají vaše komentáře dokumentární význam.
Jsou XML namespaces (xmlns) spravovány?
Ano. Namespace deklarace (xmlns:soap="...") a asociované prefixy (<soap:Envelope>) jsou zachovány jak jsou. Formátor nepřejmenovává prefixy a nepřesouvá deklarace ve stromě, což garantuje, že sémantika dokumentu zůstává identická. Výchozí namespaces (bez prefixu) jsou také udrženy na své úrovni deklarace.
Mám indentovat mezerami nebo tabulátory?
Oba fungují, ale mezery jsou dominantní konvencí, protože se zobrazují identicky všude (terminály, prohlížeče, Git diff). 2 nebo 4 mezery podle ukecanosti vašeho XML: 2 pro velmi vnořené dokumenty (SVG, Spring konfigurace), 4 pro ploché dokumenty. Podstatná zůstává konzistence v celém projektu.
Modifikuje formátor sémantiku dokumentu?
Ne. Upravovány jsou pouze bílé znaky mezi tagy. DOM struktura, hodnoty atributů a textový obsah elementů zůstávají identické. Výjimka: signifikantní textový obsah (s xml:space="preserve") musí být zachován jak je, ověřte tento aspekt, pokud vaše data obsahují mezery nesoucí význam.
Lze validovat XML současně s formátováním?
Formátor již provádí syntaktickou validaci (dobře tvarované XML), protože musí parsovat dokument. Pro validaci proti XSD schématu nebo DTD je potřeba dedikovaný nástroj: strukturální validace překračuje rámec jednoduchého formátoru. xmllint --schema nebo xerces vyhovují pro tento dodatečný krok.
Ukázka požadavku
curl -X POST https://cdrn.fr/api/v1/tools/xml-formatter/execute \
-H "Content-Type: application/json" \
-d '{"input":"..."}'
Vstupní schéma
| Pole | Typ | Povinné | Výchozí |
|---|---|---|---|
input |
text | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všechny dostupné nástrojeGET https://cdrn.fr/api/v1/tools/xml-formatter- získá schéma tohoto nástrojePOST https://cdrn.fr/api/v1/tools/xml-formatter/execute- spustí tento nástroj s JSON payloadem