Apakah ada aplikasi atau pustaka yang ada di Java yang memungkinkan saya mengonversi CSV
file data ke XML
file?
The XML
tag akan diberikan melalui mungkin baris pertama yang berisi judul kolom.
java
xml
csv
data-conversion
A Salim
sumber
sumber
Jawaban:
Mungkin ini bisa membantu: JSefa
Anda dapat membaca file CSV dengan alat ini dan membuatnya berseri menjadi XML.
sumber
Seperti yang lain di atas, saya tidak tahu cara satu langkah untuk melakukan itu, tetapi jika Anda siap menggunakan pustaka eksternal yang sangat sederhana, saya sarankan:
OpenCsv untuk mengurai CSV (kecil, sederhana, andal, dan mudah digunakan)
Xstream untuk mengurai / membuat serial XML (sangat sangat mudah digunakan, dan membuat xml yang dapat dibaca sepenuhnya oleh manusia)
Menggunakan contoh data yang sama seperti di atas, kode akan terlihat seperti ini:
Memproduksi hasil sebagai berikut: (Xstream memungkinkan penyetelan hasil yang sangat baik ...)
sumber
Saya tahu Anda meminta Java, tetapi menurut saya tugas ini sangat cocok untuk bahasa skrip. Berikut adalah solusi cepat (sangat sederhana) yang ditulis dalam Groovy.
test.csv
csvtoxml.groovy
Menulis XML berikut ke stdout:
Namun, kode melakukan parsing yang sangat sederhana (tidak memperhitungkan tanda kutip atau tanda koma) dan tidak memperhitungkan kemungkinan data yang tidak ada.
sumber
Saya memiliki kerangka kerja sumber terbuka untuk bekerja dengan CSV dan file datar secara umum. Mungkin itu layak untuk dilihat: JFileHelpers .
Dengan toolkit itu Anda dapat menulis kode menggunakan kacang, seperti:
lalu parsing file teks Anda menggunakan:
Dan Anda akan memiliki koleksi objek yang diurai.
Semoga membantu!
sumber
Solusi ini tidak memerlukan pustaka CSV atau XML dan, saya tahu, ini tidak menangani karakter ilegal dan masalah pengkodean, tetapi Anda mungkin tertarik juga, asalkan masukan CSV Anda tidak melanggar aturan yang disebutkan di atas.
Perhatian: Anda tidak boleh menggunakan kode ini kecuali Anda tahu apa yang Anda lakukan atau tidak memiliki kesempatan untuk menggunakan perpustakaan lebih lanjut (mungkin dalam beberapa proyek birokrasi) ... Gunakan StringBuffer untuk Lingkungan Waktu Proses yang lebih lama ...
Jadi ini dia:
The input test.csv (dicuri dari jawaban lain di halaman ini):
Output yang dihasilkan:
sumber
Perbedaan besar adalah bahwa JSefa membawa masuk adalah bahwa ia dapat membuat serial objek java Anda ke file CSV / XML / etc dan dapat deserialisasi kembali ke objek java. Dan itu didorong oleh anotasi yang memberi Anda banyak kendali atas hasilnya.
JFileHelpers juga terlihat menarik.
sumber
Saya tidak mengerti mengapa Anda ingin melakukan ini. Kedengarannya hampir seperti pengkodean kultus kargo.
Mengonversi file CSV ke XML tidak menambah nilai apa pun. Program Anda sudah membaca file CSV, jadi berargumen bahwa Anda memerlukan XML tidak akan berfungsi.
Di sisi lain, membaca file CSV, melakukan sesuatu dengan nilai, dan kemudian membuat serial ke XML memang masuk akal (yah, sebanyak menggunakan XML bisa masuk akal ...;)) tetapi Anda seharusnya sudah memiliki cara untuk serialisasi ke XML.
sumber
Anda dapat melakukan ini dengan sangat mudah menggunakan Groovy, dan kodenya sangat mudah dibaca.
Pada dasarnya, variabel teks akan ditulis
contacts.xml
untuk setiap baris dicontactData.csv
, dan array bidang berisi setiap kolom.sumber
Anda bisa menggunakan XSLT . Google dan Anda akan menemukan beberapa contoh misalnya CSV ke XML Jika Anda menggunakan XSLT Anda kemudian dapat mengubah XML ke format apa pun yang Anda inginkan.
sumber
Ada juga perpustakaan ServingXML yang bagus oleh Daniel Parker, yang mampu mengonversi hampir semua format teks biasa ke XML dan sebaliknya .
Contoh kasus Anda dapat ditemukan di sini : Menggunakan heading of field dalam file CSV sebagai nama elemen XML.
sumber
Tidak ada yang saya ketahui yang dapat melakukan ini tanpa Anda setidaknya menulis sedikit kode ... Anda akan memerlukan 2 perpustakaan terpisah:
Pengurai CSV yang akan saya rekomendasikan (kecuali jika Anda ingin sedikit bersenang-senang untuk menulis Parser CSV Anda sendiri) adalah OpenCSV (Proyek SourceForge untuk mengurai Data CSV)
XML Serialization Framework haruslah sesuatu yang dapat diskalakan jika Anda ingin mengubah file CSV yang besar (atau sangat besar) ke XML: Rekomendasi saya adalah Sun Java Streaming XML Parser Framework (Lihat di sini ) yang memungkinkan penguraian dan serialisasi tarik.
sumber
Sejauh yang saya tahu, tidak ada pustaka siap pakai untuk melakukan ini untuk Anda, tetapi menghasilkan alat yang mampu menerjemahkan dari CSV ke XML seharusnya hanya mengharuskan Anda untuk menulis parser CSV mentah dan menghubungkan JDOM (atau pustaka XML Java Anda pilihan) dengan beberapa kode lem.
sumber
Keluarga prosesor Jackson memiliki backend untuk berbagai format data, tidak hanya JSON. Ini termasuk backend XML ( https://github.com/FasterXML/jackson-dataformat-xml ) dan CSV ( https://github.com/FasterXML/jackson-dataformat-csv/ ).
Konversi akan bergantung pada membaca input dengan backend CSV, menulis menggunakan backend XML. Ini paling mudah dilakukan jika Anda memiliki (atau dapat menentukan) POJO untuk entri per baris (CSV). Ini bukan persyaratan yang ketat, karena konten dari CSV juga dapat dibaca "tanpa tipe" (urutan
String
array), tetapi memerlukan sedikit lebih banyak pekerjaan pada keluaran XML.Untuk sisi XML, Anda memerlukan objek root pembungkus untuk memuat larik atau
List
objek untuk diserialkan.sumber
Saya memiliki masalah yang sama dan memerlukan aplikasi untuk mengonversi file CSV menjadi file XML untuk salah satu proyek saya, tetapi tidak menemukan sesuatu yang gratis dan cukup bagus di internet, jadi saya membuat kode aplikasi CSVtoXML Java Swing saya sendiri.
Ini tersedia dari situs web saya DI SINI . Semoga bisa membantu Anda.
Jika tidak, Anda dapat dengan mudah membuat kode sendiri seperti yang saya lakukan; Kode sumber ada di dalam file jar jadi ubah sesuai kebutuhan jika tidak memenuhi kebutuhan Anda.
sumber
Untuk Bagian CSV, Anda dapat menggunakan perpustakaan sumber terbuka kecil saya
sumber
Ini mungkin solusi yang terlalu mendasar atau terbatas, tetapi tidak bisakah Anda melakukan
String.split()
pada setiap baris file, mengingat larik hasil dari baris pertama untuk menghasilkan XML, dan hanya mengeluarkan data larik setiap baris dengan XML yang tepat elemen padding setiap iterasi loop?sumber