CodeKitHub
Εργαλεία JSON

Μετατροπέας CSV σε XML

Τελευταία ενημέρωση:

Για να μετατρέψετε CSV σε XML, κάθε γραμμή γίνεται στοιχείο <row> και κάθε στήλη γίνεται child tag με όνομα από την κεφαλίδα της — η αντίστροφη μετατροπή εξάγει μία στήλη ανά διακριτό όνομα child tag που βρίσκεται στο XML. Αυτό το εργαλείο κάνει αυτή τη μετατροπή, και προς τις δύο κατευθύνσεις, εξ ολοκλήρου στον browser σας.

Τι είναι αυτό το εργαλείο;

Ορισμένα συστήματα (παλαιό επιχειρησιακό λογισμικό, ορισμένα API βασισμένα σε SOAP, feed συγγενή με RSS) αναμένουν δεδομένα ως XML, ενώ τα υπολογιστικά φύλλα και τα περισσότερα εργαλεία εισαγωγής δεδομένων αναμένουν CSV. Αυτό το εργαλείο μετακινεί δεδομένα μεταξύ των δύο μορφών: CSV → XML τυλίγει κάθε γραμμή σε στοιχείο <row> μέσα σε ένα ριζικό στοιχείο <rows>, με κάθε στήλη να γίνεται child tag με όνομα από την κεφαλίδα· XML → CSV κάνει το αντίστροφο, εξάγοντας μία στήλη ανά διακριτό όνομα child tag που βρίσκει.

Η πλευρά CSV αναλύεται με έναν κατάλληλο parser πεδίων με εισαγωγικά (όχι απλοϊκό διαχωρισμό με κόμμα), οπότε τιμές που περιέχουν κόμματα, αλλαγές γραμμής, ή ενσωματωμένα εισαγωγικά χειρίζονται σωστά. Η πλευρά XML αναλύεται χρησιμοποιώντας το εγγενές API DOMParser του browser — το ίδιο interface που χρησιμοποιούν εσωτερικά οι browsers για να αναλύσουν έγγραφα XML — αντί για έναν χειρόγραφο parser βασισμένο σε regex, οπότε ενσωματωμένα tags και τυπική διαφυγή XML χειρίζονται όπως τα χειρίζεται ένας πραγματικός parser XML.

Ονόματα στηλών/tags που δεν είναι έγκυρα ονόματα στοιχείων XML (περιέχουν κενά, ξεκινούν με ψηφίο, κ.λπ.) απολυμαίνονται αυτόματα κατά τη δημιουργία XML, καθώς τα ονόματα στοιχείων XML έχουν αυστηρότερους κανόνες από τις κεφαλίδες CSV.

Πηγή: Η ανάλυση CSV ακολουθεί το RFC 4180· η δομή XML ακολουθεί την προδιαγραφή W3C XML 1.0.

Γιατί να το χρησιμοποιήσετε;

  • Λειτουργεί και προς τις δύο κατευθύνσεις — CSV σε XML και XML σε CSV, σε ένα εργαλείο.
  • Σωστή ανάλυση CSV — χειρίζεται πεδία με εισαγωγικά που περιέχουν κόμματα, αλλαγές γραμμής και διαφυγόμενα εισαγωγικά, όχι απλώς έναν απλοϊκό διαχωρισμό με κόμμα.
  • Ανάλυση XML βασισμένη σε πρότυπα — XML → CSV χρησιμοποιεί το ενσωματωμένο DOMParser του browser αντί για έναν προσαρμοσμένο parser regex, οπότε παραμορφωμένο XML αναφέρεται ως σφάλμα αντί να παράγει σιωπηλά ακατανόητο αποτέλεσμα.
  • Αυτόματη διαφυγή XML — ειδικοί χαρακτήρες όπως & και < στις τιμές CSV σας διαφεύγουν σωστά κατά τη δημιουργία XML.
  • 100% από την πλευρά του client — τίποτα από όσα επικολλάτε εδώ δεν ανεβαίνει σε server.

Πώς χρησιμοποιείται

  1. Επικολλήστε δεδομένα CSV (με γραμμή κεφαλίδας) ή δεδομένα XML στο πλαίσιο.
  2. Κάντε κλικ στο "CSV → XML" για να δημιουργήσετε XML, ή στο "XML → CSV" για να μετατρέψετε το XML πίσω σε πίνακα.
  3. Ελέγξτε το αποτέλεσμα — αντιγράψτε το ή κατεβάστε το ως αρχείο.
  4. Για CSV → XML, κάθε γραμμή γίνεται στοιχείο <row> με ένα tag ανά στήλη, τυλιγμένο σε ριζικό στοιχείο <rows>.

Παράδειγμα

Είσοδος

name,age
Alice,30
Bob,25

Έξοδος

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

Κάθε γραμμή CSV γίνεται ένα στοιχείο <row>, και κάθε στήλη γίνεται ένα child tag με όνομα από την κεφαλίδα — περνώντας αυτό το XML πίσω από το "XML → CSV" ανακατασκευάζεται ο αρχικός πίνακας δύο στηλών.

Πρακτικές συμβουλές

  • Τροφοδότηση δεδομένων σε παλαιό σύστημα ή SOAP API που αναμένει XML: μετατρέψτε πρώτα την εξαγωγή CSV σας εδώ, μετά επικολλήστε το αποτέλεσμα XML απευθείας στο σύστημα προορισμού.
  • Έλεγχος μιας εξαγωγής XML που λάβατε: εκτελέστε XML → CSV για να πάρετε μια γρήγορη, ευανάγνωστη προβολή πίνακα χωρίς να χρειάζεστε πλήρη επεξεργαστή XML.
  • Αν το XML σας χρησιμοποιεί βαθιά ενσωματωμένα στοιχεία αντί για μια επίπεδη δομή <row><column>, αυτό το εργαλείο δεν θα ισοπεδώσει αυθαίρετη ενσωμάτωση — περιμένει ένα επίπεδο στοιχείων γραμμής, το καθένα περιέχοντας απλά στοιχεία στήλης.

Γιατί DOMParser αντί για χειρόγραφο αναγνώστη XML

Το XML έχει πραγματικούς δομικούς κανόνες — ενσωματωμένα στοιχεία, εισαγωγικά attributes, διαφυγή χαρακτήρων για &, <, >, και ούτω καθεξής — που ένας γρήγορος parser βασισμένος σε regex τείνει να κάνει λάθος σε οτιδήποτε πέρα από το απλούστερο input. Η χρήση του ενσωματωμένου API DOMParser του browser σημαίνει ότι αυτό το εργαλείο βασίζεται στην ίδια, συμβατή με πρότυπα, μηχανή XML που χρησιμοποιεί ο ίδιος ο browser για να αποδώσει έγγραφα XML, αντί να επαναϋλοποιεί την ανάλυση XML από την αρχή. Σημαίνει επίσης ότι παραμορφωμένο XML — ένα μη κλειστό tag, μια περιπλανώμενη γωνιακή αγκύλη — εμφανίζεται ως σαφές σφάλμα ανάλυσης αντί να παράγει σιωπηλά ένα κατεστραμμένο ή ελλιπές CSV.

Συχνές ερωτήσεις

Χειρίζεται αυτό σωστά τιμές CSV με κόμματα ή εισαγωγικά;

Ναι. Ο parser CSV είναι ένας κατάλληλος state-machine parser που παρακολουθεί αν βρίσκεται μέσα σε πεδίο με εισαγωγικά, οπότε κόμματα και αλλαγές γραμμής μέσα σε εισαγωγικά (π.χ. "Smith, John") και διπλασιασμένα εισαγωγικά που χρησιμοποιούνται για να διαφύγει ένας κυριολεκτικός χαρακτήρας εισαγωγικού χειρίζονται όλα σωστά — δεν διαχωρίζει απλώς σε κάθε κόμμα.

Πώς αναλύεται το XML — είναι προσαρμοσμένος parser regex;

Όχι. Το XML → CSV χρησιμοποιεί το ενσωματωμένο API DOMParser του browser για να αναλύσει το XML σε πραγματικό δέντρο εγγράφου, με τον ίδιο τρόπο που ο browser αναλύει οποιοδήποτε έγγραφο XML. Αυτό σημαίνει ότι παραμορφωμένο XML εντοπίζεται και αναφέρεται ως σφάλμα, αντί να παράγει σιωπηλά λανθασμένο αποτέλεσμα όπως θα μπορούσε να κάνει ένας χειρόγραφος parser regex.

Τι συμβαίνει με ονόματα στηλών που δεν είναι έγκυρα tags XML;

Οτιδήποτε δεν είναι γράμμα, ψηφίο, κάτω παύλα, ενωτικό ή τελεία αντικαθίσταται με κάτω παύλα, και προστίθεται μια αρχική κάτω παύλα αν το όνομα διαφορετικά θα ξεκινούσε με ψηφίο ή σημείο στίξης — καθώς τα ονόματα στοιχείων XML δεν μπορούν να ξεκινούν με αριθμό ή να περιέχουν κενά όπως μια κεφαλίδα CSV.

Ανεβαίνουν τα δεδομένα μου σε server;

Όχι. Και οι δύο κατευθύνσεις μετατροπής εκτελούνται εξ ολοκλήρου σε JavaScript στον browser σας, χρησιμοποιώντας τη δική του μηχανή ανάλυσης XML του browser — τίποτα δεν στέλνεται πουθενά, οπότε είναι ασφαλές για χρήση με εξαγόμενα επιχειρηματικά ή δεδομένα πελατών.

Θα μου δώσει η μετατροπή CSV → XML → CSV ακριβώς αυτό που ξεκίνησα;

Για καλά διαμορφωμένο CSV με συνεπές σύνολο στηλών, ναι — η μετατροπή διατηρεί τις τιμές. Αν το αρχικό CSV σας είχε ασυνεπείς στήλες σε διαφορετικές γραμμές ή ασυνήθιστους χαρακτήρες στα ονόματα κεφαλίδων, τα απολυμασμένα ονόματα tags σημαίνουν ότι η ακριβής ορθογραφία της κεφαλίδας μπορεί να μην διατηρηθεί τέλεια, αν και οι τιμές δεδομένων θα διατηρηθούν.

Σχετικά εργαλεία