Přeskočit na obsah
TextArray
100% lokálně

Konvertor XML na JSON

Převeďte XML na ekvivalentní JSON, s předponou u atributů a opakovanými tagy jako poli.

Vstup
Výstup

Konvertor XML na JSON

XML i JSON popisují strukturovaná data, ale nástroje kolem vás málokdy mluví oběma. Staré SOAP API, RSS kanál, Android layout, konfigurační soubor či datový export vám dá XML; váš skript, databáze či frontend chce JSON. Tento nástroj mezi nimi převádí skutečným parserem — ne regexovým hackem — co správně zvládá ošemetné části XML: vnořené elementy, atributy, smíšený obsah, samozavírací tagy, komentáře, CDATA sekce, XML deklaraci i DOCTYPE.

Mapování sleduje široce používanou konvenci. Atributy elementu se stanou klíči s předponou @ (nastavitelné), takže <user id="7"> dá "@id": "7". Dětské elementy se vnoří jako objekty; když se tag opakuje — tři <item> elementy za sebou — sloučí se do jediného pole, což je přesně to, co chcete pro seznamy. Element, co má jen text, se stane obyčejným řetězcem; ten, co má text i atributy, si drží text pod klíčem #text. Entity jako &amp; a číselné reference jako &#65; se dekódují a obsah CDATA se bere doslova.

Protože je to skutečný rekurzivní parser, validuje během čtení: neshodný uzavírací tag, neukončený komentář či zatoulaný obsah za kořenem vytvoří jasnou chybu s číslem řádku místo tichého zmršení výstupu. Zvolte dvou- nebo čtyřmezerové odsazení pro čitelný výsledek, nebo minifikujte na jeden řádek k vložení.

Všechno běží lokálně ve vašem prohlížeči — vaše data nikdy neopustí vaše zařízení, což u XML exportů, co často nesou záznamy a identifikátory, záleží.

Časté dotazy

Jak se XML atributy reprezentují v JSON?
Jako klíče s předponou @ ve výchozím stavu (předponu můžete změnit). Takže <book lang="en"> se stane { "book": { "@lang": "en" } }. Tohle je konvence knihoven jako xml-js a badgerfish, takže výstup zapadne do většiny toolchainů.
Co se děje s opakovanými tagy?
Stanou se polem. Tři dětské <item> se sloučí na "item": [ … ], což seznam potřebuje. Tag, co se objeví jednou, zůstane jednou hodnotou — pozor, to znamená, že dokument s jednou položkou a jiný s několika se mapují na různé tvary, což je inherentní pro XML→JSON.
Zvládá smíšený obsah a CDATA?
Ano. Element s textem i dětmi (či atributy) si drží text pod klíčem #text. CDATA sekce se berou doslova, takže jejich <raw> markup a znaky & přežijí bez parsování. Komentáře a instrukce zpracování se přeskočí.
Proč ohlásil chybu místo převodu?
Je to validující parser: neshodný uzavírací tag, neuvozený atribut, neukončený komentář či obsah za kořenovým elementem zastaví převod se zprávou s číslem řádku. Je to záměr — špatný, ale tichý převod je horší než jasná chyba.
Nahrává se moje XML někam?
Ne. Parsování a převod běží výhradně ve vašem prohlížeči a vaše data nikdy neopustí vaše zařízení.