Olen rehellinen — kun näen "XML" vuonna 2026, ensimmäinen vaistoni on ajatella "legacy-koodi". Mutta se on itse asiassa epäreilua. XML pyörittää hiljaisesti joitain planeetan kriittisimpiä järjestelmiä, eikä se ole katoamassa mihinkään lähiaikoina. Anna kun näytän sinulle miksi.
Missä XML on edelleen johdossa
Pankkitoiminta ja rahoitus: Joka kerta kun teet pankkisiirron Euroopassa, on hyvä mahdollisuus, että se kulkee ISO 20022 -viestien kautta — jotka ovat XML:ää. Talousraportointi käyttää XBRL:ää (myös XML). Puhumme biljoonista dollareista, jotka virtaavat XML-putkien läpi joka ikinen päivä.
Terveydenhuolto: HL7 FHIR käyttää sekä JSON:ia että XML:ää, mutta vanhemmat HL7 v2/v3 -viestit, joilla useimmat sairaalajärjestelmät toimivat? Puhdasta XML:ää. Potilastiedot, laboratoriotulokset, reseptit — kaikki XML:ää.
Office-dokumenttisi: Jokainen .docx-, .xlsx- ja .pptx-tiedosto on itse asiassa XML-tiedostoja täynnä oleva ZIP-arkisto. Avaa joskus yksi — se on kiehtovaa (ja hieman pelottavaa).
Android-kehitys: Jokainen layout-tiedosto Androidissa on XML:ää. activity_main.xml on todennäköisesti ensimmäinen tiedosto, jonka jokainen Android-kehittäjä luo.
Buildityökalut: Mavenin pom.xml, .NET:in .csproj-tiedostot, Spring Frameworkin konfiguraatiot — XML on syvälle juurtunut yritystyökaluketjuihin.
Mitä XML osaa ja JSON ei
Nimiavaruudet: Kuvittele yhdistäväsi eri sanastojen elementtejä yhdessä dokumentissa ilman nimikonflikteja. XML-nimiavaruudet tekevät tämän mahdolliseksi. Se on välttämätöntä formaateille kuten SVG upotettuna HTML:ään tai SOAP-otsikoiden sekoittaminen mukautettujen hyötykuormien kanssa.
Sekasisältö: Yritä esittää kappale, jossa jotkin sanat ovat lihavoituja ja toiset kursivoituja JSON:issa. Se on parhaimmillaankin kömpelöä. XML käsittelee tämän luonnollisesti, koska se suunniteltiin dokumenteille, ei pelkästään datalle.
XSLT-muunnokset: Voit kirjoittaa yhden XSLT-tyylisivun, joka muuntaa XML:n HTML:ksi, PDF:ksi, toiseksi XML-formaatiksi tai pelkäksi tekstiksi. Se on deklaratiivinen muunnoskieli, jolle ei ole todellista vastinetta JSON-maailmassa.
Skeemavalidointi: XML Schema (XSD) on ilmaisuvoimaisempi kuin JSON Schema monilla alueilla. Se voi pakottaa elementtien järjestyksen, monimutkaiset tyyppihierarkiat ja kenttien väliset rajoitukset, joiden kanssa JSON Schema kamppailee.
Todellinen esimerkki
Oletetaan, että rakennat verkkokauppajärjestelmää, jonka pitää tuottaa laskuja. XML + XSLT:n avulla tallennat laskutiedot XML:ään ja sovellat eri XSLT-tyylisivuja tuottaaksesi: HTML-version selaimeen, PDF-version tulostukseen ja EDI-version toimittajan järjestelmään — kaikki samasta lähdedatasta. Yritä tehdä se JSON:illa.
XML-nimiavaruudet käytännössä
Nimiavaruudet ovat yksi niistä XML-ominaisuuksista, jotka vaikuttavat hämmentäviltä kunnes todella tarvitset niitä. Tässä käytännön esimerkki — SVG-ikoni upotettuna XHTML-dokumenttiin:
Ilman nimiavaruuksia jäsennin ei tietäisi, kuuluuko HTML-sanastoon vai SVG-sanastoon. Nimiavaruudet antavat sinun sekoittaa sanastoja vapaasti yhdessä dokumentissa, ja se on asia, johon JSON:illa ei yksinkertaisesti ole mekanismia.
Yleisiä virheitä, joita kehittäjät tekevät XML:n kanssa
Vuosien jälkeen XML:n parissa tuotantojärjestelmissä, tässä ovat sudenkuopat, joita näen useimmin:
1. Merkistökoodausilmoitusten huomiotta jättäminen. Jos XML-tiedostosi sisältää ei-ASCII-merkkejä mutta unohdat koodausilmoituksen, jäsentimet olettavat UTF-8:n tai mikä tahansa niiden oletusarvo on. Ilmoita se aina eksplisiittisesti:
2. Attribuuttien käyttö kun elementit olisivat järkevämpiä. Attribuutit eivät voi sisältää monimutkaisia rakenteita, eivät voi toistua eivätkä kehity helposti. Jos arvo saattaa muuttua monimutkaisemmaksi myöhemmin, käytä lapsielementtiä sen sijaan.
3. Skeemaa vastaan validoimatta jättäminen. Validoimattoman XML:n levittäminen on resepti hiljaisille virheille. Jos sinulla on XSD, käytä sitä. Se havaitsee dataongelmat jäsennyshetkellä sen sijaan, että antaisi huonon datan levitä järjestelmässäsi.
4. XML:n rakentaminen merkkijonojen yhdistämisellä. Älä koskaan tee tätä — se on injektiohaavoittuvuus, joka odottaa tapahtumistaan. Käytä aina kunnollista XML-kirjastoa tai DOM-rakentajaa.
Suorituskykyvinkkejä XML:n käsittelyyn
XML-jäsentimet tulevat kahdessa päälajissa, ja oikean valitseminen on tärkeää suorituskyvylle:
- DOM-jäsentimet lataavat koko dokumentin muistiin puuna. Loistavia pienille ja keskikokoisille dokumenteille, joissa tarvitset satunnaispääsyä. Huonoja suurille tiedostoille — 100 megatavun XML-tiedosto voi kuluttaa yli 1 gigatavun RAM:ia DOM-puuna.
- SAX/StAX-jäsentimet käsittelevät dokumentin virtana, yksi elementti kerrallaan. Ne käyttävät lähes nollaa muistia ja ovat paljon nopeampia suurille tiedostoille. Kompromissi on, ettei dokumentissa voi hyppiä edestakaisin.
Tässä nyrkkisääntö: jos XML:si on alle 10 megatavua, DOM on hyvä. Yli 10 megatavua, harkitse vakavasti suoratoistoa. Yli 100 megatavua, suoratoisto on pakollista, ellet nauti palvelimesi muistin loppumisen katselusta.
XML vs JSON: Pikaopas
| Ominaisuus | XML | JSON |
| Kommentit | Kyllä () | Ei |
| Nimiavaruudet | Kyllä | Ei |
| Skeemavalidointi | XSD, RelaxNG, Schematron | JSON Schema |
| Sekasisältö | Natiivi tuki | Kömpelöt kiertotavat |
| Datatyypit | XSD:n kautta | String, number, boolean, null, array, object |
| Muunnos | XSLT | Oma koodi |
| Tiedostokoko | Suurempi (monimutkaiset tagit) | Pienempi |
| Jäsennysnopeus | Hitaampi | Nopeampi |
| Ihmisluettavuus | Hyvä (muotoiltuna) | Hyvä |
Lyhyt XML:n historia
XML julkaistiin W3C-suosituksena helmikuussa 1998. Se suunniteltiin yksinkertaistettuna SGML:n (Standard Generalized Markup Language) osajoukoksi, joka oli ollut olemassa 1980-luvulta lähtien mutta oli pahamaineisen monimutkainen. Tavoitteena oli luoda formaatti, joka olisi sekä ihmisten luettavissa että koneiden jäsennettävissä, tarpeeksi tiukka välttääkseen moniselitteisyyden ja tarpeeksi joustava mihin tahansa alaan. 2000-luvun ensimmäisen vuosikymmenen ajan XML oli *se* datanvaihtoformaatti. SOAP-verkkopalvelut, RSS-syötteet, Atom-syötteet, XHTML — kaikki oli XML:ää. Sitten JSON saapui ja otti haltuunsa web-API-tilan, mutta XML piti kiinni jokaisesta alueesta, jossa sen ainutlaatuiset ominaisuudet (nimiavaruudet, skeemat, muunnokset) todella merkitsevät.
Nykyaikainen XML-kehittäjä
Useimmat kehittäjät työskentelevät nykyään hybridympäristöissä. He käyttävät JSON:ia web-API:ille ja reaaliaikaiseen viestintään ja XML:ää dokumenttien käsittelyyn, yritysintegraatioon ja sääntelynmukaisuuteen. Molempien formaattien tunteminen — ja tietäminen milloin kumpaakin käyttää — on aidosti arvokas taito.
XML-tietoturva: XXE ja muut sudenkuopat
Jos on yksi asia XML:ssä, joka pitää tietoturvainsinöörit hereillä öisin, se on XXE — XML External Entity -hyökkäykset. Ja rehellisesti, sen pitäisi huolestuttaa sinuakin. XXE on ollut OWASP Top 10 -listalla hyvästä syystä, ja se yllättää kehittäjiä edelleen vuonna 2026.
Näin XXE toimii: XML antaa sinun määritellä "entiteettejä" — käytännössä muuttujia — dokumenttityypin ilmoituksessa (DTD). *Ulkoinen* entiteetti voi viitata URL-osoitteeseen tai tiedostopolkuun palvelimella. Jos jäsennin on konfiguroitu ratkaisemaan ulkoisia entiteettejä (monet ovat oletuksena), hyökkääjä voi luoda XML:n, joka lukee mielivaltaisia tiedostoja palvelimeltasi:
Kun jäsennin käsittelee tämän, se korvaa &xxe;:n /etc/passwd:n sisällöllä. Juuri noin hyökkääjä lukee arkaluonteisia tiedostoja järjestelmästäsi. Edistyneemmissä hyökkäyksissä he voivat jopa tehdä lähteviä HTTP-pyyntöjä palvelimeltasi (Server-Side Request Forgery) tai aiheuttaa palveluneston pahamaineisella "billion laughs" -hyökkäyksellä — rekursiivisella entiteettilaajennuksella, joka kuluttaa kaiken käytettävissä olevan muistin.
Korjaus on suoraviivainen: poista ulkoisten entiteettien käsittely käytöstä. Näin se tehdään kahdella suositulla kielellä:
XXE:n lisäksi varo XML-injektiota — jossa käyttäjän syöte lisätään XML:ään ilman kunnollista escapointia. Se on XML:n vastine SQL-injektiolle. Käytä aina kunnollista XML-rakentajakirjastoa merkkijonojen yhdistämisen sijaan (minkä mainitsin yleisten virheiden osiossa, mutta se on toistamisen arvoista, koska se on *niin* tärkeää).
Kultainen sääntö: älä koskaan jäsennä epäluotettavaa XML:ää oletusjäsentinasetuksilla. Poista aina eksplisiittisesti käytöstä ulkoisten entiteettien ratkaiseminen, DTD-käsittely ja XInclude-käsittely. Kohtele ulkomaailmasta tulevaa XML:ää samalla epäluulolla kuin käyttäjän syötettä SQL-kyselyssä.
XPath: XML:n kyseleminen kuin ammattilainen
Jos työskentelet XML:n parissa säännöllisesti etkä käytä XPathia, teet sen vaikealla tavalla. XPath on kyselykieli, joka on suunniteltu erityisesti XML-dokumenttien navigointiin, ja se on uskomattoman tehokas kun saat siitä kiinni.
Ajattele XPathia kuin CSS-valitsimia mutta XML:lle. Sen sijaan että kulkisit DOM:ia manuaalisesti sisäkkäisillä silmukoilla, kirjoitat tiiviin lausekkeen, joka valitsee tarkalleen haluamasi solmut. Tässä muutama käytännön esimerkki:
Näin käytät XPathia JavaScriptissä ja Pythonissa — kahdessa kielessä, joihin useimmat kehittäjät tarttuvat:
Yksi asia mainitsemisen arvoinen: JSON:illa ei ole sisäänrakennettua kyselykieltä. Lähin vastine on jq, joka on fantastinen mutta on ulkoinen työkalu eikä standardoitu osa formaattia. XPath on sisäänrakennettu XML-ekosysteemiin — selaimet tukevat sitä natiivisti, se on saatavilla käytännössä jokaisella ohjelmointikielellä ja W3C on standardoinut sen. Se on yksi XML:n aidoista kilpailueduista.
XPath muodostaa myös perustan XSLT:lle (joka valitsee solmut muunnettavaksi) ja XQuerylle (täydellinen kyselykieli XML-tietokannoille). Kun opit XPathin, olet avannut kokonaisen XML-teknologioiden perheen.
XML toimialastandardeissa
Mainitsin aiemmin pankkitoiminnan ja terveydenhuollon, mutta XML:n ulottuvuus toimialastandardeihin menee paljon syvemmälle. Tässä kierros aloilta, joilla XML:ää ei vain käytetä — se on *pakollista*:
Oikeusala: Oikeusala luottaa vahvasti XML:ään oikeudenkäyntiasiakirjojen jättämisessä ja tapausten hallinnassa. LegalXML, OASISin kehittämä, standardoi sähköisen oikeudenkäyntiasiakirjojen jättämisen, oikeusviittaukset ja tapausten metatiedot. Yhdysvalloissa monet osavaltion tuomioistuinjärjestelmät vaativat XML-pohjaisia sähköisiä asiakirjaformaatteja. Jos rakennat oikeusalan teknologiaa, rakennat XML:n päälle.
Kustannusala: Tämä yllättää ihmisiä — jokainen koskaan lukemasi EPUB-e-kirja on rakennettu XML:n päälle. EPUB-tiedostot ovat ZIP-arkistoja, jotka sisältävät XHTML-sisältötiedostoja (jotka ovat XML:ää), OPF-pakettikuvaajan (XML) ja navigointidokumentin (XML). DocBook, toinen XML-formaatti, on ollut teknisen dokumentaation standardi 1990-luvulta lähtien. O'Reilly Media käytti tunnetusti DocBookia vuosia tuottaakseen kirjojaan useissa tulosteformaateissa yhdestä XML-lähteestä.
Tiede ja matematiikka: MathML on W3C-standardi matemaattisen notaation esittämiseen XML:ssä. Kaikki modernit selaimet tukevat sitä ja se on välttämätön tieteelliselle julkaisemiselle verkossa. Sitten on Chemical Markup Language (CML) molekyylirakenteille, Astronomical Markup Language tähtidatalle ja kymmeniä muita tieteellisiä XML-sanastoja. Kun tarkkuus ja yksiselitteinen dataesitys ovat tärkeitä — ja tieteessä ne ovat aina — XML toimittaa.
Hallinto ja hankinnat: Universal Business Language (UBL) on OASIS-standardi, jota hallitukset ympäri maailmaa käyttävät hankintoihin, laskutukseen ja toimitusketjun hallintaan. Euroopan unionin sähköisen laskutuksen direktiivi käytännössä vaatii UBL-pohjaista XML:ää yritysten ja hallinnon väliseen laskutukseen. Jos myyt eurooppalaisille hallituksille, lähetät XML-laskuja.
Ilmailu: Aeronautical Information Exchange Model (AIXM) määrittelee XML-skeemat ilmailutiedoille — lentokentät, ilmatilat, navigointiapuvälineet, menettelyt. Jokainen lennon hallintajärjestelmä, jokainen lennonjohdon päivitys, jokainen NOTAM (Notice to Airmen) koskettaa AIXM-dataa. Tämä on ala, jossa "vaihdetaan vain JSON:iin" ei ole keskustelu, jota kukaan käy, koska formaattimigraation turvallisuusvaikutukset olisivat valtavat.
Yhteinen lanka kaikkien näiden toimialojen läpi? Ne valitsivat XML:n, koska ne tarvitsivat vahvaa validointia, nimiavaruuksia sanastojen yhdistämiseen ja formaattia, joka voisi kehittyä vuosikymmenten ajan rikkomatta taaksepäin yhteensopivuutta. Nämä vaatimukset eivät ole muuttuneet.
SOAP vs REST: Miksi XML-API:t ovat edelleen olemassa
Jos aloitit urasi viimeisen vuosikymmenen aikana, saatat luulla, että kaikki API:t ovat REST:iä JSON:illa. Mutta kävele mihin tahansa suureen pankkiin, vakuutusyhtiöön, teleoperaattoriin tai viranomaiseen, ja löydät SOAP-verkkopalveluja, jotka käsittelevät kriittistä liiketoimintalogiikkaa. Ja siihen on oikeasti hyviä syitä.
SOAP (Simple Object Access Protocol) on XML-pohjainen viestintäprotokolla, jossa on joitain ominaisuuksia, joita REST+JSON ei yksinkertaisesti tarjoa suoraan:
Vahvat sopimukset WSDL:n kautta: WSDL-tiedosto (Web Services Description Language) kuvaa *kaiken* SOAP-palvelusta — operaatiot, syöte-/tulosviestien rakenteet, datatyypit, päätepisteet. Voit automaattisesti generoida asiakaskoodin WSDL:stä Javalla, C#:lla, Pythonilla tai käytännössä millä tahansa yrityskielellä. REST-API:illa on OpenAPI/Swagger, mutta käyttöönotto on vapaaehtoista. SOAP:issa sopimus on palvelu.
Sisäänrakennettu virheenkäsittely: SOAP:issa on standardoitu fault-elementti virhekoodeineen, virhesanoineen ja yksityiskohtaelementteineen. Jokainen SOAP-asiakas tietää tarkalleen, miten virheet jäsennetään. REST-API:t? Jokainen API keksii oman virheformaattinsa.
WS-Security: SOAP:issa on kattava tietoturvastandardi, joka tukee viestintason salausta ja allekirjoitusta — ei vain kuljetustason (TLS). Tämä tarkoittaa, että SOAP-viesti voi kulkea välipalvelimien kautta pysyen salattuna päästä päähän. Tämä on erittäin tärkeää rahoituspalveluissa, joissa viestit reititetään useiden järjestelmien kautta.
Transaktiot ja luotettavuus: WS-AtomicTransaction ja WS-ReliableMessaging tarjoavat hajautetun transaktiotuen ja taatun toimituksen. Nämä ovat vaikeita ongelmia, jotka REST jättää kokonaan sovelluskehittäjän vastuulle.
Toisaalta SOAP:illa on todellisia haittoja: viestit ovat monisanaisia, oppimiskäyrä on jyrkkä, debuggaus on tuskallista ja XML:n ylimäärä tekee siitä hitaamman kuin JSON yksinkertaisissa CRUD-operaatioissa. Uusille web-API:ille ja mikropalveluille REST+JSON on lähes aina oikea valinta. Mutta monimutkaisiin yritysintegraatioihin — erityisesti säännellyillä toimialoilla — SOAP:in sisäänrakennettu sopimustenkäyttö ja tietoturvaominaisuudet ovat aidosti arvokkaita.
Siirtyminen XML:stä JSON:iin: Käytännön opas
Jossain vaiheessa uraasi joku pyytää sinua siirtämään XML-pohjaisen järjestelmän JSON:iin. Ennen kuin sanot "toki, helppoa", anna kun käyn läpi sudenkuopat, jotka yllättävät kaikki.
Attribuuttien häviäminen: XML-elementeillä voi olla sekä attribuutteja että lapsielementtejä. JSON-objekteilla on vain ominaisuuksia. Kun muunnat Dune, mihin id menee? Mihin format menee? Mihin tekstisisältö menee? Yleiset käytännöt käyttävät @-etuliitteitä attribuuteille ja #text:iä tekstisisällölle, mutta universaalia standardia ei ole — ja mitä tahansa valitsetkin, toisen järjestelmän pitää ymmärtää käytäntösi.
Tyyppimuunnos: XML on luonnostaan tekstipohjainen. Merkkijono "42" XML:ssä saattaa olla kokonaisluku, liukuluku, merkkijono tai postinumero. JSON:illa on erilliset tyypit. Migraation aikana tarvitset eksplisiittiset tyyppimäärittelysäännöt, tai päädyt merkkijonoihin missä halusit numeroita (tai pahempaa, numeroihin missä halusit merkkijonoja — hyvästi etunollat postinumeroissa).
Taulukon moniselitteisyys: Tämä on erityisen ilkeä. XML:ssä elementillä, jolla on yksi lapsi, on yksittäinen elementti. Jos sillä on useita samannimisiä lapsia, ne muodostavat luonnollisesti kokoelman. Mutta JSON:in pitää tietää etukäteen, onko jokin taulukko vai yksittäinen arvo. Mieti: Widget — onko item merkkijono vai yhden elementin taulukko? Jos toisessa tilauksessa on kolme tuotetta, rakenne muuttuu. JSON-kuluttajasi pitää käsitellä molemmat tapaukset.
Onnistuneen migraation vaiheet:
- Vaihe 1: Inventoi kaikki XML-skeemat ja dokumentoi tarkalleen, mitä ominaisuuksia käytät (nimiavaruudet, attribuutit, sekasisältö, CDATA-osiot, käsittelyohjeet).
- Vaihe 2: Suunnittele JSON-skeemasi ensin, päättäen eksplisiittisesti miten attribuutit, sekasisältö ja taulukot käsitellään. Dokumentoi jokainen päätös.
- Vaihe 3: Rakenna muunnoskerros (ei suuri uudelleenkirjoitus). Aja molempia formaatteja rinnakkain ja vertaa tuloksia.
- Vaihe 4: Siirrä kuluttajat yksi kerrallaan pitäen XML-päätepisteet elossa kunnes kaikki ovat vaihtaneet.
- Vaihe 5: Aja rinnakkaisia järjestelmiä vähintään yhden täyden liiketoimintasyklin ajan (kuukausi, vuosineljännes tai vuosi alastasi riippuen) ennen XML:n käytöstä poistamista.
Milloin EI kannata siirtyä: Jos XML:si käyttää runsaasti nimiavaruuksien sekoittamista, XSLT-muunnoksia tai XPath-pohjaisia liiketoimintasääntöjä, migraatiokustannukset saattavat ylittää hyödyt. Myös jos XML:si on sääntelyn vaatima (HL7, ISO 20022, UBL), ylläpidät XML:ää joka tapauksessa — JSON:in lisääminen vain lisää toisen tuettavan formaatin.
XML-työkalut, jotka jokaisen kehittäjän tulisi tuntea
XML:n kanssa työskentelyn ei tarvitse olla tuskallista, jos sinulla on oikeat työkalut. Tässä ne, joihin luotan:
xmllint: Tulee libxml2:n mukana ja on todennäköisesti jo järjestelmässäsi. Se validoi XML:ää skeemoja vastaan, muotoilee (pretty-print) XML:ää ja arvioi XPath-lausekkeita — kaikki komentoriviltä. Se on XML-maailman curl: yksinkertainen, nopea ja kaikkialla.
Saxon: XSLT- ja XQuery-käsittelyn kultastandardi, jonka on kehittänyt Michael Kay (joka kirjaimellisesti toimitti XSLT 2.0- ja 3.0-spesifikaatiot). Jos teet vakavia XSLT-muunnoksia, Saxon on se mitä haluat. Avoimen lähdekoodin Home Edition käsittelee XSLT 3.0:n ja XPath 3.1:n.
XMLSpy (Altova): Kaupallinen XML-IDE, joka on suosittu yrityksissä. Siinä on visuaaliset skeemaeditorit, XSLT-debuggerit ja tietokantaintegraatio. Se on kallis mutta tehokas — erityisen hyödyllinen kun työskentelet massiivisten XSD-skeemojen kanssa, joita on epäkäytännöllistä muokata käsin.
oXygen XML Editor: Henkilökohtainen suosikkini XML-intensiiviseen työhön. Se tukee XSLT-debuggausta askel askeleelta -suorituksella, XPath-arviointia, skeematietoista muokkausta automaattitäydennyksellä ja sillä on erinomainen DITA- ja DocBook-tuki. Jos kirjoitat XSLT:tä säännöllisesti, oXygen maksaa itsensä takaisin viikossa.
xmlstarlet: Komentorivi-XML-työkalupakki, jolla voit kysellä, muokata, validoida ja muuntaa XML:ää suoraan terminaalista. Ajattele sitä kuin sed ja awk mutta XML:lle. Se on täydellinen komentosarjoille ja CI/CD-putkille, joissa sinun pitää poimia arvoja XML-konfiguraatiotiedostoista tai muokata XML:ää lennossa.
Visual Studio Code XML-laajennuksilla: Jos olet jo VS Codessa, Red Hatin "XML"-laajennus tarjoaa skeemavalidoinnin, automaattitäydennyksen ja muotoilun. Yhdistettynä "XSLT/XPath"-laajennukseen se on yllättävän kyvykäs ilmainen kokoonpano satunnaiseen XML-työhön.
Kokeile itse
Tarvitsetko siltaa kahden maailman välille? XML-JSON-muuntimemme hoitaa muunnoksen säilyttäen datarakenteen ja tyypit. Jos debuggaat XML:ää, XML Formatter tekee rumimmastakin XML:stä luettavaa. Ja ennen kuin otat mitään XML:ää tuotantoon, aja se XML Validatorin läpi rakenteellisten ongelmien havaitsemiseksi ajoissa.