Mi az XML formázás?
Az XML (Extensible Markup Language) egy W3C által szabványosított szöveges formátum strukturált dokumentumokhoz és adatcseréhez. A formázás — más néven szép nyomtatás vagy szépítés — vesz egy jól formázott XML forrást, és újra behúzza, hogy minden elem, attribútum, megjegyzés, feldolgozási utasítás és CDATA szakasz könnyen áttekinthető legyen. Az elemzett dokumentumfa pontosan megmarad; csak az elemek közötti szóközök változnak.
Hogyan működik az XML formázás?
A bemeneted teljes egészében a böngésződben kerül feldolgozásra a natív DOMParser és XMLSerializer API-k, valamint egy egyedi rekurzív behúzó segítségével. A magas szintű lépések:
- A bemeneted szó szerint beolvasásra kerül a szövegmezőből — minden bájt, amit beillesztettél, lokálisan a memóriában marad.
- A böngésző elemzi a
new DOMParser().parseFromString(szöveg, 'application/xml')segítségével. Ha a bemenet nem jól formázott, az elemző beágyaz egy<parsererror>csomópontot, amelynek szöveges adata a motor sor- és oszlopjelzéseit hordozza — ezek szó szerint jelennek meg a hibasávban. - Sikeres elemzés esetén egy egyedi behúzó mélységi elsőként bejárja a DOM fát, minden elemet, attribútumkészletet, CDATA szakaszt, megjegyzést és feldolgozási utasítást a saját sorában bocsát ki az aktuális mélységben. Az önzáró void elemek tiszteletben vannak tartva, ha a beállítás be van kapcsolva.
- A kicsinyítési mód megfordítja a csővezetéket: az
XMLSerializer().serializeToString(doc)egy egysoros formátumot bocsát ki, majd egy védett regex eltávolítja az elemek közötti szóközöket anélkül, hogy hozzányúlna a CDATA blokkokon belüli vagy nem szóköz szöveges csomópontok szövegéhez. - A kimenet az írásvédett szövegmezőbe íródik, a hibasáv törlődik, és a Letöltés gomb az eredményt
.xmlfájlként csomagolja, amelyet elküldhetsz vagy egy jegyhez csatolhatsz.
Miért érdemes XML-t szépen nyomtatni ezzel az eszközzel?
- Adatvédelem: minden elemzési, formázási és kicsinyítési lépés a böngésződben történik. Az XML soha nem éri el a szervereinket — nincs feltöltés, nincs telemetria, nincs fiók.
- Pontos hibák: ha a bemenet hibás formátumú, az elemző pontosan azt a sort és oszlopot jeleníti meg, amelyet a böngésző motor jelent, nem egy szintetikus találgatást — ugyanazokat a számokat, amelyeket a DevTools-ban látnál.
- Hű oda-vissza: formázd, majd kicsinyítsd, és visszakapod az eredeti dokumentum bájt-egyenértékét (az XML deklarációs opciótól eltekintve) — a formázás soha nem kanonizálja újra a névtereket vagy írja felül az attribútumok sorrendjét.
- Gyors: a tiszta DOMParser plusz egy ~60 soros behúzó azonnal kezeli a több megabájtos SOAP borítékokat és OOXML darabokat, külső könyvtár letöltése nélkül.
Mik az XML formázás gyakori alkalmazásai?
Az XML szép nyomtatása a webes közzététel, vállalati integráció és adatarchiválás területén jelenik meg:
- RSS / Atom hírcsatorna ellenőrzés: illessz be egy podcast vagy hír hírcsatorna törzset a csatorna metaadatainak, elemsorrendjének és névtér előtagjainak megerősítéséhez a közzététel előtt.
- SOAP hibakeresés: formázz egy Wiresharkból vagy SOAP kliens naplóból másolt borítékot, hogy a Fejléc, Törzs és Hiba szakaszok első pillantásra láthatóak legyenek.
- Oldaltérkép ellenőrzés: behúzz újra egy sitemap.xml fájlt, amelyet egy versenytárstól vagy a saját tesztoldaladról kértél le, hogy megszámold a bejegyzéseket és megerősítsd a hreflang alternatívákat URL-enként.
Hogyan néz ki egy XML formázási példa?
Egy 3 elemű <feed><entry><title>Szia</title></entry></feed> beillesztése és a Formázás gomb megnyomása a 2 szóköz behúzási opcióval egy négysoros dokumentumot eredményez, minden elemmel a saját sorában, mélység szerint behúzva. A Kicsinyítés módra váltva ugyanazon a bemeneten visszaállítja az eredeti bájtkarakterláncot. Az oda-vissza utazás veszteségmentes bármely jól formázott dokumentum esetében.
Ez offline működik?
Igen. A formázási és kicsinyítési csővezeték tiszta DOMParser + XMLSerializer plusz egy apró rekurzív behúzó, mind a böngészőlapon belül fut. Semmi sincs feltöltve, nincs service worker, amely proxyként továbbítaná a bemenetedet, és az oldal nulla hálózati kérést indít a formázási lépéshez. Az egyetlen kifelé irányuló forgalom a szabványos oldalbetöltési eszközök (CSS, betűtípusok, analitika) — az XML-ed soha nem éri el az Ultim8Soft-ot.
A formázás megváltoztatja a dokumentumot?
Nincs szemantikai változás. A formázás csak az elemek közötti szóközöket írja át. Az elemnevek, attribútumértékek, szöveges tartalom, CDATA adatok, megjegyzések és feldolgozási utasítások bájt-pontosan megmaradnak. A névtér deklarációk és előtagok pontosan úgy maradnak, ahogy a bemenet írta őket — a formázó nem kanonizálja újra és nem rendezi át az attribútumokat. A kimenet ugyanarra a DOM fára elemződik, mint a bemenet, az opcionális XML deklarációs kapcsolótól eltekintve.
Hogyan kezelődnek a CDATA / megjegyzések / feldolgozási utasítások?
Mindegyik szó szerint kerül kiadásra a saját sorában az aktuális behúzási mélységben. A CDATA adatok <![CDATA[…]]>-ba vannak csomagolva, belsejében újrabehúzás nélkül — a specifikáció szerint a CDATA tartalom átlátszatlan, így a formázó soha nem nyúl hozzá. A megjegyzések <!-- … -->-t használnak; a feldolgozási utasítások <?target data?>-t. Mindhárom túléli a formázás → kicsinyítés → formázás oda-vissza utat a tartalmuk érintetlenül.
Mi a különbség az XML formázása és kicsinyítése között?
A formázás kiterjeszti a szóközöket, hogy az emberek olvashassák a dokumentumfát; a kicsinyítés visszavágja azt a szállításhoz és tároláshoz. Mindkettő az elemzett DOM-on működik, nem a nyers bájtkarakterláncon, így egy jól formázott dokumentumon végzett formázás → kicsinyítés oda-vissza út az eredeti kicsinyített forma bájt-egyenértékét eredményezi. Használd a formázási irányt, amikor el kell olvasnod vagy diff-elni kell egy XML adatot, és a kicsinyítési irányt, amikor azt egy mért API átjárón keresztül akarod küldeni vagy egy másik dokumentumba ágyazni.
Ez az XML formázó ugyanazt az elemzőt használja, amelyet a böngésződ az AJAX XHR válaszokhoz és SVG dokumentumokhoz, így bármely jól formázott XML — RSS, Atom, SOAP, oldaltérkép, OOXML, SVG — tisztán utazik oda-vissza. Illessz be bármilyen XML-t fent, másold ki a kimenetet, vagy töltsd le .xml-ként.