CodeKitHub
JSON rīki

CSV uz XML pārveidotājs

Pēdējoreiz atjaunināts:

Lai pārvērstu CSV uz XML, katra rinda kļūst par <row> elementu, un katra kolonna kļūst par pēctecī tagu, kas nosaukts pēc virsraksta — pretējā pārveide izvelk vienu kolonnu katram atšķirīgajam pēcteču taga nosaukumam, kas atrasts XML. Šis rīks veic šo pārveidi abos virzienos, pilnībā tavā pārlūkā.

Kas ir šis rīks?

Dažas sistēmas (mantotā uzņēmumu programmatūra, atsevišķi SOAP balstīti API, RSS blakusesošas plūsmas) sagaida datus kā XML, kamēr izklājlapas un lielākā daļa datu importa rīku sagaida CSV. Šis rīks pārvieto datus starp abiem formātiem: CSV → XML ietin katru rindu <row> elementā, kas ievietots saknes elementā <rows>, ar katru kolonnu kļūstot par pēctecī tagu, kas nosaukts pēc virsraksta; XML → CSV veic pretējo, izvelkot vienu kolonnu katram atšķirīgajam pēcteču taga nosaukumam, kas tiek atrasts.

CSV pusē tiek izmantots īsts pēdiņās ietvertu lauku parseris (nevis naiva sadalīšana pēc komata), tāpēc vērtības, kas satur komatus, rindu pārtraukumus vai iegultas pēdiņas, tiek apstrādātas pareizi. XML puse tiek parsēta, izmantojot pārlūka dabisko DOMParser API — to pašu interfeisu, ko pārlūki iekšēji izmanto XML dokumentu parsēšanai —, nevis pašrakstītu, uz regulārām izteiksmēm balstītu lasītāju, tāpēc iegulti tagi un standarta XML kodēšana tiek apstrādāta tā, kā to apstrādā īsts XML parseris.

Kolonnu/tagu nosaukumi, kas nav derīgi XML elementu nosaukumi (satur atstarpes, sākas ar ciparu utt.), automātiski tiek sanitizēti, ģenerējot XML, jo XML elementu nosaukumiem ir stingrāki noteikumi nekā CSV virsrakstiem.

Avots: CSV parsēšana seko RFC 4180; XML struktūra seko W3C XML 1.0 specifikācijai.

Kāpēc to izmantot?

  • Darbojas abos virzienos — CSV uz XML un XML uz CSV, vienā rīkā.
  • Pareiza CSV parsēšana — apstrādā pēdiņās ietvertus laukus ar komatiem, rindu pārtraukumiem un aizsargātām pēdiņām, ne tikai naivu komata sadalīšanu.
  • Standartos balstīta XML parsēšana — XML → CSV izmanto pārlūka iebūvēto DOMParser, nevis pielāgotu regulāro izteiksmju parseri, tāpēc slikti veidots XML tiek ziņots kā kļūda, nevis klusi rada nesakarīgu izvadi.
  • Automātiska XML kodēšana — īpašās rakstzīmes, piemēram, & un < tavos CSV datos, tiek pareizi kodētas, ģenerējot XML.
  • 100% klientā — nekas, ko šeit ielīmē, netiek augšupielādēts uz serveri.

Kā to lietot

  1. Ielīmē CSV datus (ar virsrakstu rindu) vai XML datus laukā.
  2. Nospied "CSV → XML", lai ģenerētu XML, vai "XML → CSV", lai pārvērstu XML atpakaļ tabulā.
  3. Pārskati rezultātu — kopē to vai lejupielādē kā failu.
  4. CSV → XML gadījumā katra rinda kļūst par <row> elementu ar vienu tagu katrai kolonnai, ietvertu <rows> saknē.

Piemērs

Ievade

name,age
Alice,30
Bob,25

Izvade

<?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>

Katra CSV rinda kļūst par vienu <row> elementu, un katra kolonna kļūst par pēctecī tagu, kas nosaukts pēc virsraksta — palaižot šo XML atpakaļ caur "XML → CSV", tiek atjaunota sākotnējā divkolonnu tabula.

Praktiski padomi

  • Datu padošana mantotai sistēmai vai SOAP API, kas sagaida XML: vispirms konvertē savu CSV eksportu šeit, tad ielīmē XML izvadi tieši mērķa sistēmā.
  • Saņemta XML eksporta pārbaude: palaid XML → CSV, lai iegūtu ātru, lasāmu tabulas skatu bez pilna XML redaktora.
  • Ja tavs XML izmanto dziļi ligzdotus elementus, nevis plakanu <row><column> struktūru, šis rīks nesaplacinās patvaļīgu ligzdošanu — tas sagaida vienu rindas elementu līmeni, katru ar vienkāršiem kolonnu elementiem.

Kāpēc DOMParser, nevis pašrakstīts XML lasītājs

XML ir īsti strukturāli noteikumi — ligzdoti elementi, atribūtu pēdiņas, rakstzīmju kodēšana &, <, > un tā tālāk —, kurus ātrs, uz regulārām izteiksmēm balstīts parseris mēdz smalki sajaukt jebkam, izņemot vienkāršāko ievadi. Pārlūka iebūvētā DOMParser API izmantošana nozīmē, ka šis rīks paļaujas uz to pašu standartiem atbilstošo XML dzinēju, ko izmanto pats pārlūks, lai renderētu XML dokumentus, nevis atkārtoti ieviestu XML parsēšanu no nulles. Tas arī nozīmē, ka slikti veidots XML — neaizvērts tags, nomaldījusies leņķa iekava — parādās kā skaidra parsēšanas kļūda, nevis klusi rada bojātu vai nepilnīgu CSV.

Biežāk uzdotie jautājumi

Vai tas pareizi apstrādā CSV vērtības ar komatiem vai pēdiņām?

Jā. CSV parseris ir īsts stāvokļa mašīnas parseris, kas seko līdzi, vai tas atrodas pēdiņās ietvertā laukā, tāpēc komati un rindu pārtraukumi pēdiņās (piemēram, "Smith, John") un dubultotas pēdiņas, ko izmanto burtiskas pēdiņas rakstzīmes apzīmēšanai, tiek pareizi apstrādāti — tas nevienkārši sadala pēc katra komata.

Kā tiek parsēts XML — vai tas ir pielāgots regulāro izteiksmju parseris?

Nē. XML → CSV izmanto pārlūka iebūvēto DOMParser API, lai parsētu XML reālā dokumenta kokā, tāpat kā pārlūks parsē jebkuru XML dokumentu. Tas nozīmē, ka slikti veidots XML tiek atklāts un ziņots kā kļūda, nevis klusi rada nepareizu izvadi, kā to varētu darīt pašrakstīts, uz regulārām izteiksmēm balstīts parseris.

Kas notiek ar kolonnu nosaukumiem, kas nav derīgi XML tagi?

Viss, kas nav burts, cipars, apakšsvītra, defise vai punkts, tiek aizstāts ar apakšsvītru, un sākuma apakšsvītra tiek pievienota, ja nosaukums citādi sāktos ar ciparu vai pieturzīmi — jo XML elementu nosaukumi nevar sākties ar ciparu vai saturēt atstarpes, kā to var CSV virsraksts.

Vai mani dati tiek augšupielādēti serverī?

Nē. Abi pārveides virzieni notiek pilnībā JavaScript tavā pārlūkā, izmantojot pārlūka pašu XML parsēšanas dzinēju — nekas netiek nekur nosūtīts, tāpēc to droši var izmantot ar eksportētiem biznesa vai klientu datiem.

Vai pārveide CSV → XML → CSV atgriezīs tieši to pašu, ar ko sāku?

Labi veidotam CSV ar konsekventu kolonnu kopu — jā, ceļš turp un atpakaļ saglabā vērtības. Ja tavā sākotnējā CSV bija nekonsekventas kolonnas dažādās rindās vai neparastas rakstzīmes virsrakstu nosaukumos, sanitizētie taga nosaukumi nozīmē, ka precīza virsraksta rakstība var netikt perfekti saglabāta, lai gan datu vērtības tiks.

Saistītie rīki