Kaj je to orodje?
Nekateri sistemi (starejša podjetniška programska oprema, določeni API-ji na osnovi SOAP, sorodni RSS viri) pričakujejo podatke kot XML, medtem ko preglednice in večina orodij za uvoz podatkov pričakujejo CSV. To orodje premakne podatke med obema oblikama: CSV → XML zavije vsako vrstico v element <row> znotraj korenskega elementa <rows>, vsak stolpec pa postane otroška oznaka, poimenovana po glavi; XML → CSV naredi obratno, izvleče en stolpec za vsako različno ime otroške oznake, ki jo najde.
Stran CSV je razčlenjena s pravim razčlenjevalnikom polj v narekovajih (ne z naivnim deljenjem na vejicah), tako da so vrednosti, ki vsebujejo vejice, prelome vrstic ali vgrajene narekovaje, pravilno obravnavane. Stran XML je razčlenjena z uporabo vgrajenega API-ja brskalnika DOMParser — istega vmesnika, ki ga brskalniki interno uporabljajo za razčlenjevanje XML dokumentov — namesto ročno napisanega regex bralnika, tako da so gnezdene oznake in standardno ubežanje XML obravnavani tako, kot jih obravnava pravi XML razčlenjevalnik.
Imena stolpcev/oznak, ki niso veljavna imena elementov XML (vsebujejo presledke, se začnejo s številko itd.), so samodejno sanirana pri ustvarjanju XML-a, saj imajo imena elementov XML strožja pravila kot glave CSV.
Vir: razčlenjevanje CSV sledi RFC 4180; struktura XML sledi specifikaciji W3C XML 1.0.
Zakaj ga uporabiti?
- Deluje v obe smeri — CSV v XML in XML v CSV, v enem orodju.
- Pravilno razčlenjevanje CSV — obravnava polja v narekovajih z vejicami, prelomi vrstic in ubežanimi narekovaji, ne le naivno deljenje na vejicah.
- Standardno razčlenjevanje XML — XML → CSV uporablja vgrajen DOMParser brskalnika namesto razčlenjevalnika po meri z regex, tako da je pokvarjen XML sporočen kot napaka namesto tiho ustvarjenega neuporabnega izhoda.
- Samodejno ubežanje XML — posebni znaki, kot sta & in < v tvojih CSV vrednostih, so pravilno ubežani pri ustvarjanju XML-a.
- 100 % na strani odjemalca — nič od tega, kar tukaj prilepiš, se ne naloži na strežnik.
Kako ga uporabljati
- Prilepi CSV podatke (z vrstico glave) ali XML podatke v polje.
- Klikni "CSV → XML", da ustvariš XML, ali "XML → CSV", da pretvoriš XML nazaj v tabelo.
- Preglej izhod — ga kopiraj ali prenesi kot datoteko.
- Za CSV → XML vsaka vrstica postane element <row> z eno oznako na stolpec, zavit v koren <rows>.
Primer
Vnos
name,age
Alice,30
Bob,25Rezultat
<?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>Vsaka CSV vrstica postane en element <row>, vsak stolpec pa postane otroška oznaka, poimenovana po glavi — če ta XML pošlješ nazaj skozi "XML → CSV", se obnovi izvirna dvostolpčna tabela.
Praktični nasveti
- Podajanje podatkov v starejši sistem ali SOAP API, ki pričakuje XML: najprej tukaj pretvori svoj izvoz CSV, nato prilepi izhod XML neposredno v ciljni sistem.
- Preverjanje prejetega izvoza XML: zaženi XML → CSV, da dobiš hiter, berljiv pogled tabele brez potrebe po celotnem urejevalniku XML.
- Če tvoj XML uporablja globoko gnezdene elemente namesto ravne strukture <row><column>, to orodje ne bo poravnalo poljubnega gnezdenja — pričakuje eno raven elementov vrstic, od katerih vsak vsebuje preproste elemente stolpcev.
Zakaj DOMParser namesto ročno napisanega bralnika XML
XML ima resnična strukturna pravila — gnezdene elemente, narekovanje atributov, ubežanje znakov za &, <, > in tako naprej — ki jih hiter razčlenjevalnik z regex ponavadi rahlo napačno obravnava pri vsem razen najpreprostejšem vnosu. Uporaba vgrajenega API-ja brskalnika DOMParser pomeni, da se to orodje zanaša na isti standardom skladen XML pogon, ki ga brskalnik sam uporablja za izris XML dokumentov, namesto da bi razčlenjevanje XML ponovno implementiral od začetka. Pomeni tudi, da se pokvarjen XML — nezaprta oznaka, zabloden kotni oklepaj — pokaže kot jasna napaka razčlenjevanja namesto tiho ustvaril pokvarjen ali nepopoln CSV.
Pogosta vprašanja
Ali to pravilno obravnava CSV vrednosti z vejicami ali narekovaji?
Da. CSV razčlenjevalnik je pravi razčlenjevalnik s stanji, ki sledi, ali je znotraj polja v narekovajih, tako da so vejice in prelomi vrstic znotraj narekovajev (npr. "Smith, John") ter podvojeni narekovaji, uporabljeni za beg dobesednega znaka narekovaja, vsi pravilno obravnavani — ne le deli na vsaki vejici.
Kako je XML razčlenjen — ali je to razčlenjevalnik po meri z regex?
Ne. XML → CSV uporablja vgrajen API brskalnika DOMParser za razčlenjevanje XML-a v pravo drevo dokumenta, na enak način, kot brskalnik razčleni kateri koli XML dokument. To pomeni, da je pokvarjen XML zaznan in sporočen kot napaka, namesto da bi tiho ustvaril napačen izhod, kot bi ga lahko ročno napisan razčlenjevalnik z regex.
Kaj se zgodi z imeni stolpcev, ki niso veljavne oznake XML?
Vse, kar ni črka, številka, podčrtaj, vezaj ali pika, je nadomeščeno s podčrtajem, dodan pa je tudi vodilni podčrtaj, če bi se ime sicer začelo s številko ali ločilom — saj se imena elementov XML ne morejo začeti s številko ali vsebovati presledkov, kot lahko glava CSV.
Ali so moji podatki naloženi na strežnik?
Ne. Obe smeri pretvorbe se v celoti izvajata v JavaScript v tvojem brskalniku, z uporabo lastnega mehanizma za razčlenjevanje XML brskalnika — nič se ne pošlje nikamor, zato je to varno za uporabo z izvoženimi poslovnimi ali strankinimi podatki.
Bo pretvorba CSV → XML → CSV vrnila natanko tisto, s čimer sem začel?
Za dobro oblikovan CSV z dosledno množico stolpcev, da — krožna pot ohranja vrednosti. Če je imel tvoj izvirni CSV nedoslednim stolpcem po vrsticah ali nenavadne znake v imenih glave, sanirana imena oznak pomenijo, da natančen zapis glave morda ne bo popolnoma ohranjen, čeprav bodo vrednosti podatkov ohranjene.