ToolDeck

CSV to XML

Konversi data CSV ke format XML

Coba contoh

Input CSV

Output XML

Berjalan lokal · Aman untuk menempel rahasia
Output XML akan muncul di sini…

Apa itu Konversi CSV ke XML?

Konversi CSV ke XML mengubah nilai yang dipisahkan koma menjadi dokumen Extensible Markup Language (XML). Setiap baris CSV menjadi satu elemen XML, dan setiap header kolom dipetakan sebagai nama tag elemen anak. Hasilnya adalah dokumen hierarkis yang mendeskripsikan dirinya sendiri, yang dapat divalidasi terhadap skema (XSD atau DTD) dan diproses dengan perkakas XML standar seperti XSLT, XPath, serta parser SAX/DOM.

XML telah menjadi standar pertukaran data sejak W3C menerbitkan spesifikasi XML 1.0 pada tahun 1998. Meskipun JSON telah menggantikan XML di banyak web API, XML tetap menjadi format yang diperlukan untuk layanan web SOAP, umpan RSS/Atom, grafis SVG, dokumen Office Open XML (.docx, .xlsx), file resource Android, konfigurasi build Maven/Gradle, serta industri yang diatur seperti layanan kesehatan (HL7 CDA), keuangan (FpML, XBRL), dan pemerintahan (NIEM). Ketika data sumber Anda berupa spreadsheet atau ekspor basis data, konversi CSV ke XML adalah cara untuk memasukkan data tersebut ke dalam sistem-sistem ini.

Konverter CSV ke XML yang benar harus menangani kasus tepi RFC 4180: kolom yang dikutip berisi koma atau baris baru, tanda kutip ganda yang di-escape, dan pembatas yang bervariasi. Dari sisi XML, konverter harus meng-escape lima entitas XML yang telah ditentukan (& < > " '), menghasilkan nama elemen yang valid dari header (mengganti spasi dan karakter khusus), serta menghasilkan output yang well-formed dengan deklarasi XML yang tepat dan pengkodean yang konsisten.

Mengapa Menggunakan Konverter CSV ke XML?

Menulis XML secara manual dari data spreadsheet lambat dan rawan kesalahan. Melewatkan satu tag penutup atau lupa meng-escape tanda ampersand menghasilkan XML yang tidak valid dan merusak parser hilir. Konverter ini menangani penguraian, escaping, dan pembuatan elemen dalam satu langkah.

Konversi langsung di browser
Tempel CSV dan dapatkan output XML yang well-formed dengan deklarasi yang tepat, elemen root, dan elemen anak yang bersarang. Tidak perlu perkakas command-line atau instalasi library.
🔒
Data tetap privat
Semua konversi berjalan secara lokal di browser Anda menggunakan JavaScript. Data CSV Anda tidak pernah diunggah ke server, tidak pernah dicatat dalam log, dan tidak pernah disimpan di luar perangkat Anda.
🎯
Hasilkan XML yang valid dan well-formed
Output meng-escape entitas XML, membersihkan nama header menjadi tag elemen yang valid, dan menghasilkan markup yang bersarang dengan benar sehingga lulus validator atau linter XML mana pun.
📋
Tangani semua dialek CSV
Mendeteksi otomatis koma, titik koma, tab, dan karakter pipa sebagai pembatas. Mendukung aturan pengapitan RFC 4180 termasuk tanda kutip ganda yang di-escape, kolom multibaris, dan file UTF-8 yang diawali BOM.

Kasus Penggunaan CSV ke XML

Integrasi SOAP dan API lama
Banyak sistem enterprise masih menggunakan layanan web SOAP yang memerlukan body request berupa XML. Konversi ekspor data CSV menjadi payload XML yang sesuai dengan skema WSDL layanan sebelum mengirim request.
Buat file konfigurasi
Hasilkan daftar dependensi Maven pom.xml, file resource Android, atau definisi Spring bean dari spreadsheet berisi dependensi, string, atau entri konfigurasi. Produksi konfigurasi XML secara massal dari satu sumber CSV.
ETL pipeline data
Masukkan ekspor CSV dari basis data atau alat analitik ke dalam pipeline ETL berbasis XML. Alat seperti Apache NiFi, Talend, dan SSIS menerima input XML untuk alur kerja transformasi yang memerlukan validasi skema di setiap tahap.
Pelaporan regulasi dan kepatuhan
Industri seperti layanan kesehatan (HL7 CDA), keuangan (XBRL, FpML), dan pemerintahan (NIEM) mewajibkan pengiriman dalam format XML. Konversi data kepatuhan tabular ke struktur XML yang diperlukan sebelum pengiriman.
Pembuatan umpan RSS dan Atom
Ubah daftar artikel, judul, dan tanggal dalam format CSV menjadi umpan RSS 2.0 atau Atom. Alur kerja manajemen konten sering dimulai dari spreadsheet postingan yang perlu dipublikasikan sebagai umpan sindikasi.
Belajar dasar-dasar XML
Mahasiswa yang mempelajari XML dapat menempel data CSV yang sudah dikenal dan melihat hierarki elemen, penumpukan, serta escaping entitas yang dihasilkan. Membandingkan input dan output membuat konsep abstrak seperti well-formedness dan validitas menjadi konkret.

Referensi Pemetaan CSV ke XML

Memahami cara setiap bagian file CSV dipetakan ke struktur XML membantu Anda memprediksi format output dan menyesuaikan data sebelum konversi.

Konsep CSVPadanan XMLDetail
CSV fileXML documentThe entire file maps to a root element containing all records
Header rowElement tag namesEach column header becomes the tag name for child elements
Data row<row> elementEach row becomes a repeating child element of the root
Cell valueText nodeCell content becomes the text inside the corresponding tag
Empty cellEmpty element or omittedCan be rendered as <field/> or excluded from output
Comma delimiterXML structureDelimiters are replaced by element nesting and closing tags

CSV vs XML

CSV adalah format berbasis pembatas yang datar tanpa skema atau tipe data bawaan. XML adalah bahasa markup hierarkis yang mendeskripsikan dirinya sendiri dan mendukung skema, namespace, serta penumpukan yang kompleks. Pilihan di antara keduanya bergantung pada kebutuhan sistem hilir Anda.

CSV
Teks biasa, satu record per baris. Tidak ada tipe data: setiap nilai adalah string. Tidak ada hierarki atau penumpukan. Ukuran file minimal. Didukung secara universal oleh spreadsheet, basis data, dan bahasa skrip. Didefinisikan oleh RFC 4180. Paling cocok untuk transfer data tabular sederhana antara sistem yang keduanya memahami tata letak kolom.
XML
Markup hierarkis dengan tag pembuka dan penutup. Mendukung atribut, namespace, konten campuran, dan bagian CDATA. Dapat divalidasi terhadap skema XSD atau DTD. Diproses oleh XSLT, XPath, parser SAX dan DOM. Ukuran file lebih besar dari CSV karena overhead tag. Diperlukan oleh SOAP API, Office Open XML, RSS/Atom, dan banyak industri yang diatur.

Contoh Kode

Berikut adalah contoh konversi CSV ke XML yang dapat dijalankan dalam berbagai bahasa. Setiap contoh mengurai baris header CSV sebagai nama tag elemen, membungkus setiap baris data dalam elemen kontainer, dan meng-escape entitas XML pada konten sel.

JavaScript (browser / Node.js)
// CSV string → XML with proper escaping
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

function csvToXml(csv, rootTag = 'data', rowTag = 'row') {
  const rows = csv.trim().split('\n').map(r => r.split(','))
  const [headers, ...data] = rows
  const xmlRows = data.map(row => {
    const fields = headers.map((h, i) => {
      const val = (row[i] || '').replace(/&/g, '&amp;')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
      return `    <${h}>${val}</${h}>`
    }).join('\n')
    return `  <${rowTag}>\n${fields}\n  </${rowTag}>`
  }).join('\n')
  return `<?xml version="1.0" encoding="UTF-8"?>\n<${rootTag}>\n${xmlRows}\n</${rootTag}>`
}

console.log(csvToXml(csv))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <data><row><name>Alice</name><age>30</age>...</row>...</data>
Python
import csv, io
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.DictReader(io.StringIO(csv_string))
root = Element('data')

for row in reader:
    row_el = SubElement(root, 'row')
    for key, value in row.items():
        child = SubElement(row_el, key)
        child.text = value

# Pretty-print with declaration
raw = tostring(root, encoding='unicode')
pretty = parseString(raw).toprettyxml(indent='  ')
print(pretty)
# → <?xml version="1.0" ?>
# → <data>
# →   <row>
# →     <name>Alice</name>
# →     <age>30</age>
# →     <city>Berlin</city>
# →   </row>
# →   ...
# → </data>
Go
package main

import (
	"encoding/csv"
	"encoding/xml"
	"fmt"
	"os"
	"strings"
)

type Field struct {
	XMLName xml.Name
	Value   string `xml:",chardata"`
}

type Row struct {
	XMLName xml.Name `xml:"row"`
	Fields  []Field
}

type Data struct {
	XMLName xml.Name `xml:"data"`
	Rows    []Row
}

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()
	headers := records[0]

	var data Data
	for _, rec := range records[1:] {
		row := Row{}
		for i, h := range headers {
			row.Fields = append(row.Fields, Field{
				XMLName: xml.Name{Local: h},
				Value:   rec[i],
			})
		}
		data.Rows = append(data.Rows, row)
	}

	out, _ := xml.MarshalIndent(data, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <data><row><name>Alice</name>...</row>...</data>
}
CLI (csvkit / xmlstarlet)
# Using Python's csv and xml modules via one-liner
python3 -c "
import csv, sys
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

reader = csv.DictReader(sys.stdin)
root = Element('data')
for row in reader:
    r = SubElement(root, 'row')
    for k, v in row.items():
        SubElement(r, k).text = v
print(parseString(tostring(root, encoding='unicode')).toprettyxml(indent='  '))
" < data.csv

# Using Miller (mlr) — a dedicated CSV/JSON/XML tool
mlr --icsv --oxml cat data.csv

Pertanyaan yang Sering Diajukan

Bagaimana cara kerja konversi CSV ke XML?
Konverter membaca baris pertama CSV Anda sebagai header kolom. Setiap baris berikutnya menjadi satu elemen XML, dan setiap nilai sel dibungkus dalam elemen anak yang dinamai sesuai header kolomnya. Hasilnya adalah dokumen XML yang well-formed dengan elemen root yang berisi satu elemen anak per baris data.
Apa yang terjadi pada karakter khusus seperti & dan < dalam data CSV saya?
Konverter meng-escape kelima entitas XML yang telah ditentukan: & menjadi &amp;, < menjadi &lt;, > menjadi &gt;, " menjadi &quot;, dan ' menjadi &apos;. Ini menghasilkan XML yang valid yang tidak akan merusak parser atau menyebabkan kesalahan well-formedness.
Bisakah saya menggunakan nama tag kustom untuk elemen root dan baris?
Ya. Alat ini memungkinkan Anda mengatur nama elemen root (default: "data") dan nama elemen baris (default: "row"). Header kolom dari CSV selalu menjadi nama elemen anak. Jika sebuah header mengandung spasi atau karakter yang tidak valid sebagai nama elemen XML, alat ini akan membersihkannya secara otomatis.
Apa perbedaan antara CSV ke XML dan CSV ke JSON?
CSV ke XML menghasilkan dokumen markup hierarkis dengan tag pembuka/penutup, deklarasi XML, dan dukungan validasi skema (XSD/DTD). CSV ke JSON menghasilkan array objek key-value yang lebih ringan. Gunakan XML ketika sistem target mengharuskannya (SOAP API, format yang diatur, umpan RSS). Gunakan JSON untuk REST API, frontend JavaScript, dan basis data NoSQL.
Bagaimana cara memvalidasi output XML yang dihasilkan?
Tempel output ke validator XML mana pun untuk memeriksa well-formedness (penumpukan yang benar, escaping entitas yang tepat, tag yang cocok). Untuk validasi skema, sediakan file XSD dan gunakan alat seperti xmllint, Xerces, atau validator XSD online. XML yang dihasilkan oleh alat ini selalu well-formed, namun validitas skema bergantung pada apakah strukturnya cocok dengan skema target Anda.
Apakah konverter dapat menangani file CSV yang besar?
Alat ini berjalan di browser Anda, sehingga performa bergantung pada memori yang tersedia. File hingga beberapa megabyte (puluhan ribu baris) dapat dikonversi tanpa masalah pada perangkat modern. Untuk file yang sangat besar (100 MB ke atas), pertimbangkan menggunakan perkakas command-line seperti modul csv dan xml.etree Python, atau paket encoding/csv dan encoding/xml Go, yang memproses data sebagai stream tanpa memuat semuanya ke dalam memori.
Apakah XML yang dihasilkan kompatibel dengan transformasi XSLT?
Ya. Output adalah XML standar yang well-formed dengan deklarasi dan struktur elemen yang konsisten. Anda dapat menerapkan stylesheet XSLT mana pun untuk mengubahnya menjadi HTML, skema XML lain, atau teks biasa. Struktur yang dapat diprediksi (elemen root > baris > field) membuat penulisan selektor XPath dan template XSLT menjadi lebih mudah.