Mis see tööriist on?
Mõned süsteemid (vanapärane ettevõttetarkvara, teatud SOAP-põhised API-d, RSS-i lähedased vood) ootavad andmeid XML-ina, samal ajal kui arvutustabelid ja enamik andmeimpordi tööriistu ootavad CSV-d. See tööriist liigutab andmeid nende kahe formaadi vahel: CSV → XML mähib iga rea <row> elementi juurelemendi <rows> sees, kusjuures igast veerust saab lapstähis, mis on nimetatud päise järgi; XML → CSV teeb vastupidise, eraldades ühe veeru iga leitud erineva lapstähise nime kohta.
CSV pool parsitakse korraliku jutumärgitud väljade parseriga (mitte naiivse komale jagamisega), seega käsitletakse õigesti väärtusi, mis sisaldavad komasid, reavahetusi või sisemisi jutumärke. XML pool parsitakse brauseri natiivse DOMParser API abil — sama liidesega, mida brauserid kasutavad XML-dokumentide sisemiseks parsimiseks — mitte käsitsi kirjutatud regex-põhise lugejaga, seega käsitletakse pesastatud tähiseid ja standardset XML-pääsemist samamoodi nagu päris XML parser.
Veeru/tähise nimed, mis pole kehtivad XML elemendinimed (sisaldavad tühikuid, algavad numbriga jne), puhastatakse automaatselt XML-i genereerimisel, kuna XML elemendinimedel on rangemad reeglid kui CSV päistel.
Allikas: CSV parsimine järgib RFC 4180; XML struktuur järgib W3C XML 1.0 spetsifikatsiooni.
Miks seda kasutada?
- Töötab mõlemas suunas — CSV XML-iks ja XML CSV-ks, ühes tööriistas.
- Korrektne CSV parsimine — käsitleb jutumärgitud välju komade, reavahetuste ja pääsetud jutumärkidega, mitte ainult naiivset komale jagamist.
- Standarditele tuginev XML parsimine — XML → CSV kasutab brauseri sisseehitatud DOMParser'it, mitte kohandatud regex-parserit, seega raporteeritakse vigane XML veana, mitte ei toodeta vaikimisi rämpsandmeid.
- Automaatne XML pääsemine — su CSV väärtustes olevad erimärgid nagu & ja < pääsetakse XML-i genereerimisel õigesti.
- 100% kliendipoolne — midagi, mida siia kleebid, ei laadita serverisse.
Kuidas kasutada
- Kleebi kasti CSV andmed (päisreaga) või XML andmed.
- Klõpsa „CSV → XML”, et genereerida XML, või „XML → CSV”, et teisendada XML tagasi tabeliks.
- Vaata väljund üle — kopeeri see või laadi see failina alla.
- CSV → XML puhul saab igast reast <row> element ühe tähisega iga veeru kohta, mähituna <rows> juurelementi.
Näide
Sisend
name,age
Alice,30
Bob,25Tulemus
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<name>Alice</name>
<age>30</age>
</row>
<row>
<name>Bob</name>
<age>25</age>
</row>
</rows>Igast CSV reast saab üks <row> element ja igast veerust lapstähis, mis on nimetatud päise järgi — selle XML-i uuesti „XML → CSV” kaudu läbi jooksutades taastub algupärane kaheveeruline tabel.
Praktilised nõuanded
- Andmete söötmine vanapärasesse süsteemi või SOAP API-sse, mis ootab XML-i: teisenda oma CSV eksport siin kõigepealt ja kleebi seejärel XML väljund otse sihtsüsteemi.
- Saadud XML ekspordi auditeerimine: käivita XML → CSV, et saada kiire, loetav tabelivaade ilma täieliku XML-redaktorita.
- Kui su XML kasutab sügavalt pesastatud elemente, mitte lamedat <row><veerg> struktuuri, ei suuda see tööriist suvalist pesastust lamestada — see eeldab ühte rea-elementide taset, mis igaüks sisaldab lihtsaid veeru-elemente.
Miks DOMParser, mitte käsitsi kirjutatud XML lugeja
XML-il on päris struktuurireeglid — pesastatud elemendid, atribuutide jutumärgistus, märkide pääsemine tähtede &, <, > jaoks ja nii edasi —, mida kiire regex-põhine parser kipub kõige lihtsamast sisendist keerulisemate puhul veidralt valesti tegema. Brauseri sisseehitatud DOMParser API kasutamine tähendab, et see tööriist toetub samale standarditele vastavale XML-mootorile, mida brauser ise kasutab XML dokumentide renderdamiseks, mitte ei rakenda XML parsimist nullist uuesti. See tähendab ka, et vigane XML — sulgemata tähis, eksinud nurksulg — ilmub selge parsimisveana, mitte ei tooda vaikselt rikutud või puudulikku CSV-d.
Korduma kippuvad küsimused
Kas see käsitleb CSV väärtusi komade või jutumärkidega korrektselt?
Jah. CSV parser on korralik olekumasinal põhinev parser, mis jälgib, kas ta on jutumärgitud välja sees, seega käsitletakse õigesti nii jutumärkide sees olevaid komasid ja reavahetusi (nt "Smith, John") kui ka reaalse jutumärgi pääsemiseks kasutatud kahekordistatud jutumärke — see ei jaga lihtsalt igal komal.
Kuidas XML parsitakse — kas see on kohandatud regex-parser?
Ei. XML → CSV kasutab brauseri sisseehitatud DOMParser API-t, et parsida XML päris dokumendipuuks, samamoodi nagu brauser parsib mis tahes XML dokumenti. See tähendab, et vigane XML tuvastatakse ja raporteeritakse veana, mitte ei toodeta vaikimisi valet väljundit viisil, nagu käsitsi kirjutatud regex-põhine parser võiks.
Mis juhtub veeru nimedega, mis pole kehtivad XML tähised?
Kõik, mis pole täht, number, alakriips, sidekriips või punkt, asendatakse alakriipsuga, ning algav alakriips lisatakse, kui nimi muidu algaks numbri või kirjavahemärgiga — kuna XML elemendinimed ei saa alata numbriga ega sisaldada tühikuid nii nagu CSV päis saab.
Kas mu andmed laaditakse serverisse?
Ei. Mõlemad teisenduse suunad toimuvad täielikult JavaScriptis su brauseris, kasutades brauseri enda XML parsimismootorit — midagi ei saadeta kuhugi, seega on see turvaline kasutada eksporditud äri- või kliendiandmestikega.
Kas CSV → XML → CSV annab täpselt tagasi selle, millest alustasin?
Korrektse CSV puhul, millel on järjekindel veergude komplekt, jah — ringtee säilitab väärtused. Kui su algupärane CSV sisaldas ridade lõikes ebajärjekindlaid veerge või ebatavalisi märke päisenimedes, tähendab puhastatud tähisenimede kasutamine, et täpne päise kirjapilt ei pruugi olla täiuslikult säilinud, kuigi andmeväärtused on.