Konverter XML ke JSON

Konversi XML ke JSON dan sebaliknya dengan pemetaan stabil dan terdokumentasi — atribut, array, dan teks campuran — memakai DOMParser.

Konversi berjalan lokal di browser Anda. Dokumen Anda tidak pernah meninggalkan perangkat.

—

Cara kerja

XML ke JSON memakai DOMParser lalu menelusuri pohon dengan konverter rekursif tulisan tangan; JSON ke XML menelusuri objek ke arah sebaliknya. Pemetaannya tetap dan terdokumentasi di bawah — berkas yang sama selalu menghasilkan JSON yang sama, dan JSON menyusun ulang XML yang sama.

Konvensinya, dalam satu gambaran
Atribut dikumpulkan ke dalam objek "attr" pada elemennya; elemen siblings berulang dengan nama sama menjadi array JSON; elemen yang mencampur teks dengan anak atau atribut menyimpan teksnya di bawah "#text"; elemen tanpa anak cukup menjadi string teksnya.
Angka dan boolean tetap string
XML tidak punya tipe data, jadi setiap nilai teks dikonversi menjadi string JSON persis seperti ditulis — "12" tidak pernah jadi angka 12. Itu menjaga arah balik tetap persis (primitif JSON diformalkan kembali jadi string) dan menghindari perubahan diam-diam pada nilai seperti "007" atau "true" yang akan dirusak oleh konverter penebak tipe.
Yang hilang, secara jujur
Komentar dan processing instruction tidak punya representasi JSON dalam pemetaan ini dan tidak bertahan dalam perjalanan bolak-balik; konten CDATA menjadi teks biasa (tanpa kehilangan untuk teksnya sendiri). Prefiks namespace dipertahankan secara literal, tidak pernah diperluas. Deklarasi XML ditulis ulang saat ekspor dengan encoding UTF-8.

Pertanyaan yang sering diajukan

Mengapa tidak ada satu pemetaan XML ke JSON yang "benar"?

XML tidak punya tipe array — elemen <item> yang berulang dan satu <item> terlihat sama bentuknya begitu hitungannya hilang, dan XML tidak bisa menyatakan "daftar ini selalu daftar" tanpa skema. Setiap konverter harus menebak, dan tebakannya beda-beda. Karena itu beberapa konverter daring menghasilkan JSON berbeda dari berkas yang sama; halaman ini memilih satu konvensi yang terdokumentasi dan mengikutinya secara stabil di dua arah.

Apakah alat ini memahami skema XSD atau DTD?

Tidak. Alat ini hanya membaca dokumen instans — elemen, atribut, dan teks seperti yang tertulis. Tidak akan berkonsultasi ke XSD untuk memutuskan apakah elemen kemunculan tunggal tetap harus jadi array, dan tidak menyelesaikan entitas eksternal. Jika konsumen Anda butuh pemetaan berbasis skema, Anda memerlukan konverter yang memuat skemanya sendiri.

Bagaimana dengan berkas XML yang sangat besar?

Semuanya berjalan di memori browser, jadi berkas puluhan megabyte akan ter-parse tetapi bisa terasa lambat saat dikonversi, dan JSON.stringify menggandakan pemakaian memori lagi. Untuk feed berukuran gigabyte, jawaban jujur adalah konverter streaming di server; alat ini dibuat untuk berkas konfigurasi, payload API, dan XML seukuran dokumen.

Bisakah saya mengonversi JSON kembali ke XML dan mendapat berkas saya lagi?

Dalam pemetaan yang terdokumentasi, bisa — format alat ini sendiri melakukan bolak-balik: konversi ke JSON, ubah sebuah nilai, konversi kembali, dan atribut, elemen berulang, serta teks keluar dengan bentuk yang sama seperti awal. Berkas dari konverter lain dengan konvensi berbeda (misalnya prefiks "@" atau "_" untuk teks) mungkin perlu penyesuaian manual.

Apakah ada yang diunggah ke server?

Tidak. Analisis dan konversi adalah JavaScript murni ditambah DOMParser browser, berjalan sepenuhnya di perangkat Anda. Dokumen Anda — dan kredensial apa pun di dalam XML konfigurasi — tidak pernah meninggalkan mesin Anda.