XML állományok olvashatóvá tétele (Pretty Print) – HTML + JavaScript

xml_pretty_print_v1.0

(from: wiki.hippoedit.com/plugins/xml-pretty-print)

Egy ideje már keresek olyan megoldást, amivel XML állományokat könnyen és gyorsan, emberi szem számára is olvashatóvá lehet tenni (pretty print) és lehetőség szerint böngészőből működik (vagyis kvázi cross platform és nem igényel semmilyen telepítést sem :). Ja és persze ne szerver oldali legyen a transzformáció, mert nem szeretem nem tudni mi is történik a háttérben (még ha deperszonalizál adatokkal dolgozunk is, maga a struktúra is érdekes lehet az „érdeklődők” számára, szóval csak a tisztán kliens oldali átalakítás jöhet szóba).
Az esetek többségében persze az off-line tool-ok is jók, legalábbis ha működnek: a Notepad++, PSPad és egyéb plain-text editorok és kiegészítőik sajnos az esetek nagy részében nem használhatóak erre, mert minden áron szeretnék az XML-t mindenféle szempontok szerint validálni és általában ezen el is bukik a pretty print…
Például ha az alábbi teszt „XML”-t szeretnénk olvashatóvá varázsolni, akkor rendre hibákat kapunk:

Notepad++:

—————————
XML Tools plugin
—————————
Errors detected in content. Please correct them before applying pretty print.
—————————
OK
—————————

PSPad:

Found 3 errors 0 warnings
line 1 column 182 – Error: unexpected </soapenv> in <soapenv:Envelope>
line 1 column 192 – Error: unexpected </d> in <soapenv:Envelope>
line 1 column 238 – Error: unexpected </a> in <soapenv:Envelope>

Vannak azért megengedőbb (más elven működő) eszközök is, például a SOAPUI minden, alapvető szintaktikának megfelelő XML-t hajlandó szépen megformázni és bár nem erre találták ki, de én erre is rengetegszer használom :). Jó is volt ez évekig, de sajnos néha már mobil eszközről is kellene ez a funkcionalitás…
Szerencsére ez már másoknak is eszébe juthatott, mert sikerült találni egy tisztán JS alapú, gyakorlatilag kész formázó kódot MIT licencel (vkbeautify.js). Ez ráadásul egy „karakter alapú” megoldás (adott karakter/karaktercsoport előfordulásra definiál szabályokat), vagyis nem XSLT transzformációkkal dolgozik, aminek egyik előnye, hogy az utóbbi szerint invalid-nak tekintett string-eket is képes olvashatóra formázni.
Innen már csak egy kisebb lépés volt egy saját implementáció, ami elérhető itt:

hzoltan.com/XML_print_v0.01.html

Természetesen ez is egy kliens oldali megoldás, végig is lehet debug-olni bármely böngészőben. Sok tekintetben még nagyon kezdeti stádiumban van, minimális a hibakezelés és persze a CSS sem a legtökéletesebb, de használható – én legalábbis már használom :).

Vélemény, hozzászólás?

FIGYELEM! Ez a bejegyzés több mint egy éves, így a benne szereplő információk is ennek megfelelően kezelendőek! Az esetleges frissítések minden esetben külön megjelöltek.