Konverter XML ke CSV Gratis
Konversi data XML ke format CSV dengan deteksi otomatis.
Cara penggunaan
- Tempel atau ketik data XML Anda di area sebelah kiri.
- Alat secara otomatis mendeteksi elemen yang berulang dan meratakan struktur bersarang.
- Pratinjau data Anda di sebelah kanan. Klik Unduh CSV untuk menyimpan berkas yang dikonversi.
Pertanyaan yang sering diajukan
Bagaimana elemen bersarang ditangani?
Elemen bersarang diratakan dengan notasi titik. Misalnya, «person.address.city» menjadi satu header kolom.
Bagaimana jika elemen memiliki jumlah anak yang berbeda?
Nilai yang hilang dibiarkan kosong dalam output CSV. Semua header kolom dipertahankan meskipun beberapa baris tidak memiliki nilai tertentu.
Bagaimana alat mendeteksi elemen yang berulang?
Alat secara otomatis mengidentifikasi jenis elemen yang paling sering dalam XML Anda dan menggunakannya sebagai sumber baris.
Mengapa Konversi XML-ke-CSV Sering Muncul
XML bersifat verbose dan hierarkis; CSV datar dan padat. Banyak data dunia nyata yang berguna ada dalam XML, sitemap.xml, feed RSS / Atom, file ekspor WordPress, konfigurasi Apple plist, daftar dependensi pom.xml Maven, trek GPS (GPX), penanda Google Earth (KML), format laporan bank (CAMT.053, MT940 dalam bentuk XML), feed produk e-commerce, healthcare HL7 v3, laporan keuangan dalam XBRL, lembaran musik dalam MusicXML, dan hampir tidak ada yang dapat dianalisis tanpa terlebih dahulu diratakan menjadi baris. Excel, Google Sheets, SQL LOAD DATA, Pandas, R, Tableau, Power BI semuanya mengonsumsi CSV secara langsung; memasukkan XML Anda ke salah satu alat tersebut berarti terlebih dahulu mengonversi.
Ketidakcocokan Mendasar
XML memungkinkan penggunaan bersarang yang sembarang; CSV bersifat dua dimensi. Tidak ada pemetaan XML→CSV yang lossless dan serbaguna. Setiap konverter harus membuat asumsi tentang level pohon mana yang mewakili «baris» dan cara menangani penggunaan bersarang yang lebih dalam. Dua bentuk umum:
- Format record berulang (kasus yang mudah). Elemen root yang berisi banyak anak dengan bentuk yang sama.
<catalog><book>…</book><book>…</book></catalog>. Setiap<book>menjadi baris; elemen daunnya menjadi kolom. Inilah yang dicari konverter dan ditanganinya dengan bersih. - Format dokumen konten campuran. Teks mengalir dengan markup yang disematkan, seperti XHTML atau DocBook. Tidak ada pemetaan CSV yang bersih untuk ini, biasanya diserialisasi sebagai sel string tunggal atau ditolak.
Alat mendeteksi elemen berulang secara otomatis dengan menemukan anak langsung paling sering dari root, yang benar untuk ~90% feed XML nyata. Jika XML Anda tidak sesuai pola tersebut, proses terlebih dahulu dengan skrip XPath cepat atau edit secara manual menjadi bentuk record berulang.
Feed XML Umum yang Dikonversi dengan Baik
- sitemap.xml: setiap entri
<url>menjadi baris dengan kolomloc,lastmod,changefreq,priority. Berguna untuk audit SEO dan inventaris konten. - Feed RSS / Atom: setiap
<item>atau<entry>menjadi baris. Berguna untuk analisis pemasaran konten atau migrasi ke platform berbeda. - XML ekspor WordPress (WXR): tag
<item>untuk postingan, halaman, lampiran. Umum saat migrasi ke Substack, Ghost, atau generator situs statis. - GPX (GPS Exchange Format), trackpoint
<trkpt>denganlat,lon,ele,timemenjadi baris. Berguna untuk analisis rute. - KML (Google Earth), entri
<Placemark>dengan nama, deskripsi, koordinat. - iTunes / Apple plist XML dalam bentuk record berulang, entri playlist, metadata aplikasi.
- OFX / QFX / CAMT laporan bank XML: transaksi menjadi baris untuk impor akuntansi.
- Feed katalog produk: banyak platform e-commerce mengirimkan feed XML dengan elemen berulang
<product>untuk pengiriman CSE.
Cara Atribut, Penggunaan Bersarang, dan Anak Berulang Ditangani
- Atribut seperti
<book id="42">diratakan menjadi kolom. Konverter menggunakan nama atribut langsung sebagai header kolom (id) ketika tidak ambigu. - Elemen bersarang diratakan dengan notasi titik:
<person><address><street>Main</street><city>NYC</city></address></person>menghasilkan kolomaddress.streetdanaddress.city. Ini adalah konvensi yang sama yang digunakanjson_normalizePandas untuk JSON bersarang. - Elemen anak berulang seperti
<tags><tag>a</tag><tag>b</tag></tags>bisa menjadi masalah: tidak ada representasi datar yang jelas. Proses terlebih dahulu jika Anda membutuhkan output satu-kolom-per-tag atau satu-baris-per-tag. - Lima referensi entitas yang telah ditentukan (
&,<,>,',") di-unescape saat konversi, sehinggaTom & Jerrydalam XML menjadiTom & Jerrydi sel CSV. - Bagian CDATA dibuka, isinya menjadi nilai sel apa adanya.
- Komentar dan instruksi pemrosesan dihilangkan; CSV tidak memiliki padanannya.
Enkoding: Jebakan Excel
XML mendeklarasikan enkodingnya melalui <?xml version="1.0" encoding="UTF-8"?>. CSV tidak memiliki deklarasi enkoding; konsumen menebaknya. Excel di Windows defaultnya Windows-1252, sehingga membuka CSV UTF-8 tanpa Byte Order Mark menampilkan mojibake (é menjadi é, ü menjadi ü). Solusinya: simpan CSV dengan UTF-8 BOM () di awal, gunakan wizard impor Data → Dari Teks/CSV Excel dan pilih UTF-8 secara eksplisit, atau buka file di Google Sheets yang menangani UTF-8 dengan benar tanpa BOM.
Pilihan Pembatas
Menurut RFC 4180, pembatas CSV kanonik adalah koma. Alat ini juga mendukung titik koma, tab, dan pipe, pilih yang sesuai untuk audiens Anda:
- Koma: default. Excel membacanya ketika pengaturan regional OS menggunakan bahasa Inggris. Aman untuk sebagian besar kasus penggunaan.
- Titik koma: lebih disukai di Eropa daratan dan Amerika Latin, di mana koma adalah pemisah desimal. Excel menggunakan pemisah daftar OS, sehingga Excel dengan lokal Prancis atau Jerman menghasilkan CSV dengan pembatas titik koma.
- Tab: berguna ketika kolom mengandung koma (alamat, teks bebas). Umum dalam data ilmiah.
- Pipe: jatuh ke pembatas yang jarang ada dalam data alami apa pun. Digunakan dalam beberapa sistem enterprise lama di mana data mungkin mengandung koma, titik koma, DAN tab.
Menurut RFC 4180, kolom yang mengandung pembatas yang dipilih, jeda baris, atau tanda kutip ganda secara otomatis dibungkus dalam tanda kutip ganda; tanda kutip ganda yang tertanam di-escape dengan cara menggandakannya. Aturan quoting yang sama berlaku terlepas dari pembatas yang Anda pilih.
Privasi
Payload XML sering mengandung informasi rahasia: transaksi laporan bank, data karyawan internal, sitemap yang mengungkap URL internal, rekam medis, katalog produk yang dilindungi NDA. DOMParser bawaan browser berjalan sepenuhnya di tab Anda, tidak ada permintaan jaringan, tidak ada roundtrip server, tidak ada entri log. Data masuk dari clipboard Anda ke pohon yang di-parsing di memori, diproses sekali untuk perataan, dan hasilnya mendarat di textarea output. Jika Anda tidak mengklik Unduh, tidak ada yang bahkan ditulis ke disk.
Kesalahan Umum
- Menempel XML yang bukan berbentuk record berulang. Dokumen seperti file konfigurasi tunggal tanpa pengulangan tidak akan diratakan menjadi CSV yang dapat digunakan. Konverter dirancang untuk XML «daftar item serupa».
- Mengharapkan awalan atribut dapat dibalikkan.
<product id="42">menjadi kolom bernamaid, bukanproduct@idatauproduct.id. Jika Anda mengimpor ulang CSV di tempat lain sebagai XML, Anda perlu melakukan pemetaan ulang. - Pembatas yang salah untuk audiens. CSV dengan koma yang dibuka di instalasi Excel Prancis dapat kolaps menjadi satu kolom. Cocokkan pembatas dengan tempat file akan berakhir.
- Lupa UTF-8 BOM untuk Excel. Karakter non-Latin terlihat rusak di Windows Excel tanpa BOM. Tambahkan atau buka file di Google Sheets / Excel for the web.
- Mencoba mengonversi XHTML atau DocBook. XML dokumen konten campuran tidak diratakan dengan bersih, gunakan pipeline XML/XSLT yang tepat untuk itu, bukan konverter tabular.
- Risiko CSV-injection yang sudah ada sebelumnya pada nilai kolom. Jika XML Anda mengandung teks buatan pengguna dan Anda akan membuka output di Excel atau Sheets, sel yang dimulai dengan
=,+,-, atau@diinterpretasikan sebagai formula. OWASP mendokumentasikan ini sebagai kelas serangan nyata, lakukan sanitasi sebelum berbagi ekspor konten buatan pengguna. - Elemen anak berulang. Jika XML memiliki pembungkus
<tags>dengan beberapa anak<tag>, output datar tidak dapat merepresentasikannya dengan bersih. Ratakan menjadi satu baris per tag (dengan kolom induk yang diulang) atau proses terlebih dahulu XML untuk membuat tag inline sebagai string yang dibatasi.
Pertanyaan yang Lebih Sering Diajukan
Apakah alat akan memvalidasi XML saya terhadap skema?
Tidak. Alat hanya memeriksa well-formedness, menggunakan DOMParser bawaan browser. Jika Anda memerlukan validasi XSD atau RELAX NG, gunakan alat khusus seperti xmllint, Saxon, atau validator XML Schema W3C, well-formedness sudah cukup untuk perataan yang aman ke CSV.
Seberapa besar XML saya bisa?
Sebesar yang dapat ditampung browser Anda. Tidak ada batas sisi server karena tidak ada server yang terlibat. Puluhan megabyte dikonversi dalam satu atau dua detik di perangkat modern. Jika Anda memiliki ratusan megabyte XML, pecah menjadi beberapa batch sebelum mengonversi; menjalankan seluruhnya melalui satu tab browser dapat mencapai batas memori.
Apakah alat menangani namespace XML?
Ya, elemen dengan namespace seperti <atom:link> dikenali dan awalan dipertahankan dalam nama kolom. Jika Anda tidak menginginkan awalan dalam header CSV, jalankan pencarian-dan-penggantian cepat pada output untuk menghapusnya.
Apakah XML saya diunggah ke mana pun?
Tidak. Semua parsing dan perataan terjadi di browser Anda melalui DOMParser bawaan. Konten textarea tidak pernah dikirimkan, dicatat, atau disimpan. Setelah tab ditutup, datanya hilang.
Apa perbedaan antara ini dan alat JSON-ke-CSV?
Tujuan yang sama (meratakan data hierarkis menjadi baris) tetapi format input yang berbeda. XML lebih verbose, memungkinkan atribut, memiliki namespace, dan menggunakan referensi entitas untuk karakter khusus. Konverter XML-ke-CSV menangani fitur-fitur tersebut secara khusus; konverter JSON-ke-CSV mengharapkan input array-of-object. Jika Anda memiliki JSON, gunakan alat itu; jika Anda memiliki XML, alat ini akan memberikan hasil yang lebih bersih.
Bisakah saya mendapatkan konversi terbalik (CSV ke XML)?
Tidak dari alat ini, tetapi kebalikannya umumnya lebih mudah, pilih nama elemen baris, bungkus setiap baris, dan ubah setiap kolom menjadi elemen anak. Skrip Python atau Node kecil dengan csv + xml.etree menangani ini dalam 20 baris. Atau gunakan alat data terstruktur seperti Power Query Excel, yang dapat mengekspor CSV kembali ke XML dengan skema yang dipilih.