Ce este formatarea XML?
XML (Extensible Markup Language) este un format text standardizat W3C pentru documente structurate și schimb de date. Formatarea — numită și pretty-printing sau beautifying — preia un XML bine format și îl re-indentează astfel încât fiecare element, atribut, comentariu, instrucțiune de procesare și secțiune CDATA să fie ușor de scanat. Arborele documentului parsat este păstrat exact; doar spațiile albe dintre elemente se schimbă.
Cum funcționează formatarea XML?
Intrarea ta este procesată în întregime în browserul tău folosind API-urile native DOMParser și XMLSerializer plus un indenter recursiv personalizat. Pașii la nivel înalt sunt:
- Intrarea ta este citită literal din textarea — fiecare octet pe care l-ai lipit este păstrat în memorie local.
- Browserul o parsează cu
new DOMParser().parseFromString(text, 'application/xml'). Dacă intrarea nu este bine formată, parserul încorporează un nod<parsererror>a cărui încărcătură text poartă indicațiile de linie și coloană ale motorului — sunt afișate textual în banda de eroare. - La o parsare reușită, un indenter personalizat traversează arborele DOM în adâncime, emițând fiecare element, set de atribute, secțiune CDATA, comentariu și instrucțiune de procesare pe propria linie la adâncimea curentă. Etichetele void auto-închise sunt respectate când opțiunea este activată.
- Modul Minify inversează pipeline-ul:
XMLSerializer().serializeToString(doc)emite o formă pe o singură linie, apoi o expresie regulată protejată elimină spațiile albe dintre elemente fără a atinge textul din blocurile CDATA sau nodurile text care nu sunt spații albe. - Rezultatul este scris în textarea doar pentru citire, banda de eroare este ștearsă, iar butonul Descarcă împachetează rezultatul ca fișier
.xmlpe care îl poți trimite sau atașa la un bilet.
De ce să faci pretty-print XML cu acest instrument?
- Confidențialitate: fiecare pas de parsare, formatare și minimizare are loc în browserul tău. XML-ul nu ajunge niciodată pe serverele noastre — fără încărcare, fără telemetrie, fără cont.
- Erori precise: când intrarea este malformată, parserul afișează linia și coloana exacte pe care motorul browserului însuși le raportează, nu o estimare sintetică — aceleași numere pe care le-ai vedea în DevTools.
- Drum dus-întors fidel: formatează apoi minimizează și primești înapoi echivalentul în octeți al documentului tău original (exceptând opțiunea de declarație XML) — formatarea nu re-canonicalizează niciodată namespace-urile sau rescrie ordinea atributelor.
- Rapid: DOMParser pur plus un indenter de ~60 de linii gestionează instantaneu plicuri SOAP de mulți megaocteți și bucăți OOXML, fără bibliotecă externă de descărcat.
Care sunt aplicațiile comune ale formatării XML?
Pretty-printing-ul XML apare în publicarea web, integrarea enterprise și arhivarea datelor:
- Inspectare feed RSS / Atom: lipește corpul unui podcast sau feed de știri pentru a confirma metadatele canalului, ordonarea elementelor și prefixele de namespace înainte de publicare.
- Depanare SOAP: formatează un plic copiat din Wireshark sau dintr-un jurnal client SOAP pentru ca secțiunile Header, Body și Fault să fie vizibile dintr-o privire.
- Auditare sitemap: re-indentează un sitemap.xml preluat de la un concurent sau propriul site de staging pentru a număra intrările și a confirma variantele hreflang per URL.
Cum arată un exemplu de formatare XML?
Lipirea unui <feed><entry><title>Hello</title></entry></feed> cu 3 elemente și apăsarea pe Formatează cu opțiunea de indentare 2 spații produce un document pe patru linii, cu fiecare element pe propria linie, indentat după adâncime. Trecerea la Minify pe aceeași intrare îl colapsează înapoi la șirul original de octeți. Drumul dus-întors este fără pierderi pentru orice document bine format.
Funcționează acest lucru offline?
Da. Pipeline-ul de formatare și minimizare este pur DOMParser + XMLSerializer plus un mic indenter recursiv, toate rulând în fila browserului. Nimic nu este încărcat, niciun service worker nu proxy-ează intrarea ta, iar pagina nu face nicio cerere de rețea pentru pasul de formatare în sine. Singurul trafic de ieșire sunt activele standard de încărcare a paginii (CSS, fonturi, analytics) — XML-ul tău nu ajunge niciodată la Ultim8Soft.
Schimbă formatarea documentul?
Nicio schimbare semantică. Formatarea rescrie doar spațiile albe dintre elemente. Numele elementelor, valorile atributelor, conținutul text, încărcăturile CDATA, comentariile și instrucțiunile de procesare sunt păstrate byte cu byte. Declarațiile de namespace și prefixele sunt păstrate exact așa cum le-a scris intrarea — formatterul nu re-canonicalizează sau reordonează atributele. Rezultatul se parsează la același arbore DOM ca intrarea, exceptând comutatorul opțional de declarație XML.
Cum sunt gestionate CDATA / comentariile / instrucțiunile de procesare?
Fiecare este emis textual pe propria linie la adâncimea curentă de indentare. Încărcăturile CDATA sunt înfășurate în <![CDATA[…]]> fără re-indentare în interior — specificația spune că conținutul CDATA este opac, așa că formatterul nu îl atinge niciodată. Comentariile folosesc <!-- … -->; instrucțiunile de procesare folosesc <?target data?>. Toate trei supraviețuiesc unui drum dus-întors formatare → minimizare → formatare cu conținutul intact.
Care este diferența dintre formatarea și minimizarea XML?
Formatarea expandează spațiile albe pentru ca oamenii să poată citi arborele documentului; minimizarea le elimină pentru transport și stocare. Ambele operează pe DOM-ul parsat, nu pe șirul brut de octeți, așa că un drum dus-întors formatare → minimizare pe un document bine format produce echivalentul în octeți al formei minimizate originale. Folosește direcția de formatare când trebuie să citești sau să faci diff pe o încărcătură XML și direcția de minimizare când vrei să transporți una printr-un API gateway cu taxare sau să o încorporezi în alt document.
Acest formatter XML folosește același parser pe care browserul tău îl folosește pentru răspunsurile AJAX XHR și documentele SVG, așa că orice XML bine format — RSS, Atom, SOAP, sitemap, OOXML, SVG — face un drum dus-întors curat. Lipește orice XML mai sus, copiază rezultatul sau descarcă-l ca .xml.