§

Illessz be XML-t

§

Beállítások

Mód
Behúzás
XML deklaráció
Önzáró void elemek
§

Formázott kimenet

xml

Az XML szép nyomtatása mindenhol megtérül, ahol strukturált dokumentumok keresztezik az emberi szemeket: a BBC és az NPR olyan RSS hírcsatornákat küld, amelyeket podcast kliensek és hírolvasók fogyasztanak; az amerikai szövetségi SOAP végpontok a Társadalombiztosítási Hivatalnál és a Pénzügyminisztériumnál továbbra is XML adatokat cserélnek az állami ügynökségekkel; az HL7 v2 és v3 dokumentumok betegadatokat mozgatnak az amerikai kórházi rendszerek között; az OOXML minden vállalati Microsoft Word, Excel és PowerPoint fájlban XML a szívben; a GOV.UK és szövetségi weboldalak sitemap.xml fájlokat tesznek közzé, amelyeket a Google és a Bing naponta bejár. Az építőrendszerek is támaszkodnak rá — a Maven POM fájlok, a Gradle XML építési szkriptek és az SVG vektoros eszközök mind profitálnak a tiszta behúzásból, amikor egy pull requestben diff-elődnek.

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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 .xml fá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.