Apakah alat ini?
XML dan JSON kedua-duanya format data berbentuk pokok, tetapi digunakan di tempat berbeza: API perusahaan lama, perkhidmatan SOAP, suapan RSS/Atom dan banyak format konfigurasi masih menggunakan XML, manakala API REST moden dan kod JavaScript hampir semuanya menggunakan JSON. Alat ini menterjemah antara kedua-duanya supaya anda tidak perlu menulis salah satunya secara manual apabila mengintegrasikan sistem lama dan baharu.
Penukaran ini dibina terus di atas API DOMParser pelayar untuk membaca XML, dan mengikut struktur yang ditetapkan oleh spesifikasi W3C XML 1.0 untuk menghasilkannya — jadi XML yang dijana adalah sah dari segi format dan XML yang diterima diproses sama seperti pelayar atau mana-mana pustaka XML yang mematuhi piawaian akan memprosesnya.
Oleh sebab XML mempunyai konsep yang tiada pada JSON (atribut, kandungan teks/elemen bercampur, satu elemen root yang wajib) dan JSON mempunyai konsep yang tiada pada XML (array asli, boolean, nombor), alat ini menggunakan konvensyen yang didokumentasikan dan meluas digunakan: atribut XML `name="value"` menjadi kunci JSON `"@_name": "value"`, kandungan teks elemen menjadi sama ada nilai string terus elemen (apabila tiada anak atau atribut) atau kunci `"#text"` bersama mana-mana atribut, dan elemen sibling berulang dengan tag sama menjadi array JSON.
Kenapa guna alat ini?
- Dwi-arah — tukar JSON ke XML atau XML ke JSON dari skrin yang sama.
- Mengendalikan penyarangan dengan betul — objek JSON bersarang menjadi elemen XML bersarang dan sebaliknya, pada sebarang kedalaman.
- Array dipetakan kepada elemen berulang — array JSON di bawah satu kunci menjadi elemen XML sibling sebanyak itu dengan tag sama, dan tag XML berulang kembali sebagai array JSON.
- Atribut XML dikekalkan — menggunakan konvensyen `@_attributeName`, jadi data atribut tidak hilang secara senyap.
- Salin ke papan klip atau muat turun sebagai fail .json atau .xml.
- 100% sisi klien — apa yang anda tampal tidak dimuat naik ke mana-mana.
Cara menggunakannya
- Pilih arah: "XML → JSON" atau "JSON → XML".
- Tampal data anda ke dalam kotak input.
- Klik "Convert".
- Semak hasilnya, kemudian salin atau klik "Download" untuk simpan sebagai fail.
Contoh
Input
{"user":{"name":"Alice","age":30}}Hasil
<?xml version="1.0" encoding="UTF-8"?>
<user>
<name>Alice</name>
<age>30</age>
</user>Kunci JSON peringkat atas yang tunggal ("user") menjadi elemen root XML; jika JSON mempunyai lebih daripada satu kunci peringkat atas, alat ini membungkus semuanya dalam elemen <root> kerana XML memerlukan tepat satu root.
Tip praktikal
- Migrasi konfigurasi XML lama (seperti fail tetapan aplikasi lama) ke sistem berasaskan JSON moden: tampal XML, tukar, dan laraskan nama medan mengikut keperluan.
- Menguji endpoint SOAP atau XML-RPC dari JavaScript: tukar payload permintaan JSON anda ke XML di sini sebelum menghantarnya, atau tukar respons XML kembali ke JSON untuk memeriksanya dengan mudah.
- Jika JSON anda menggunakan array untuk data yang XML akan wakili sebagai elemen berulang, pastikan array itu bersarang di bawah satu kunci dahulu (contohnya {"items":{"item":[1,2,3]}}) bukannya array peringkat atas kosong, kerana XML tidak boleh mempunyai berbilang elemen root.
Kenapa konvensyen atribut @_ penting
Bahagian paling rumit dalam penukaran JSON/XML ialah elemen XML boleh membawa dua jenis data serentak — atribut dan kandungan anak — manakala objek JSON biasa hanya ada kunci dan nilai. Tanpa konvensyen untuk memisahkan ini, penukar yang naif akan sama ada kehilangan atribut sepenuhnya atau mencampurkannya dengan elemen anak dengan cara yang tidak boleh ditukar semula dengan pasti. Konvensyen awalan `@_name` (juga digunakan oleh pustaka yang meluas digunakan dalam ekosistem JavaScript) menyelesaikan ini dengan memberi atribut bentuk kunci yang jelas dan tidak berbelah bahagi, jadi `<product id="42">Widget</product>` berpindah balik dengan bersih sebagai `{"product":{"@_id":"42","#text":"Widget"}}` bukannya kehilangan id atau meneka salah nilai mana untuk mana.
Soalan lazim
Apa yang berlaku kepada JSON dengan lebih daripada satu kunci peringkat atas?
XML memerlukan satu elemen root, jadi jika objek JSON anda mempunyai berbilang kunci peringkat atas (contohnya {"a":1,"b":2}), output dibungkus dalam elemen <root>: <root><a>1</a><b>2</b></root>. Jika JSON anda mempunyai tepat satu kunci peringkat atas, kunci itu terus menjadi nama elemen root.
Bagaimana atribut XML diwakili dalam JSON?
Atribut seperti <user id="7"> menjadi kunci "@_id": "7" dalam objek JSON hasil. Ini adalah konvensyen biasa yang didokumentasikan (digunakan oleh pustaka seperti fast-xml-parser) yang mengekalkan atribut supaya boleh dibezakan daripada elemen anak.
Adakah elemen XML berulang menjadi array JSON?
Ya. Jika satu elemen mempunyai berbilang anak dengan nama tag sama, contohnya <items><item>1</item><item>2</item></items>, penukaran ke JSON menghasilkan {"items":{"item":["1","2"]}}. Menukar JSON itu kembali ke XML akan menghasilkan semula elemen <item> yang berulang.
Adakah nombor dan boolean dikekalkan semasa menukar XML ke JSON?
XML tiada konsep asli untuk nombor atau boolean — semuanya adalah teks — jadi kandungan teks akan keluar sebagai string JSON (contohnya "30" bukan 30). Jika anda perlukan jenis numerik, anda perlu menukar medan tersebut selepas itu.
Adakah data saya dimuat naik ke mana-mana?
Tidak. Penghuraian dan penukaran berlaku sepenuhnya dalam JavaScript di pelayar anda, menggunakan API DOMParser terbina dalam — tiada apa yang dihantar ke pelayan, jadi selamat digunakan dengan fail konfigurasi peribadi atau payload API dalaman.