Tidak suka iklan? Pergi Bebas Iklan Hari ini

XML Tidak Mati (Sayangnya) — Konversi Ke JSON Seperti Seorang Dewasa

Diperbarui pada

Anda berpikir telah melarikan diri dari XML. Anda salah. Berikut cara mengelola XML dari API dan sistem perusahaan generasi lama, memahami keanehan struktur, dan mengonversinya ke JSON tanpa kehilangan akal sehat.

XML Tidak Mati (Sayangnya) — Konversi ke JSON Seperti Seorang Dewasa 1
IKLAN · HAPUS?

Kamu belajar REST. Kamu menerima JSON. Kamu berpikir era XML telah usai, seperti Flash atau IE6 — sesuatu yang kamu ceritakan kepada para pengembang muda seperti cerita di sekitar api pembaruan. Lalu klien baru memberikan kamu kredensial API untuk integrasi perbankan, dan tiba-tiba muncul: sebuah pesan SOAP dengan 400 baris yang menatapmu.

Selamat datang kembali ke XML. Ini tidak pernah pergi.

Mengapa XML Masih Dimanfaatkan Di Seluruh Tempat

Bagi banyak pengembang yang membuat aplikasi modern, XML terasa seperti warisan. Namun di dunia nyata — terutama di perangkat lunak perusahaan, perbankan, kesehatan, dan sistem pemerintahan — XML adalah infrastruktur yang sangat penting. Berikut tempat di mana kamu akan menemukannya:

  • Layanan web SOAP – Masih menjadi standar untuk lembaga keuangan, platform asuransi, dan sistem ERP besar. Integrasi fintechmu mungkin melalui satu dari itu.
  • API Perbankan – Pesan ISO 20022, pesan SWIFT, dan banyak API inti perbankan berkomunikasi dalam XML. Tidak ada opsi REST.
  • Data pemerintahan – HMRC, IRS, dan sebagian besar portal pemerintahan menerima atau mengembalikan data dalam format XML. Ini tidak akan berubah segera.
  • Middleware perusahaan – Sistem SAP, Oracle, dan sistem ESB generasi lama menggunakan XML secara native. Jika kamu mengintegrasikan dengan sistem perusahaan, kemungkinan besar kamu akan menemui XML.
  • Feed RSS dan Atom – Masih dalam format XML. Banyak pipeline konten, agregator berita, dan alat pemantauan bergantung pada mereka.

Kenyataan yang tidak nyaman: XML tidak akan pergi karena sistem yang dibangun di atasnya tidak akan pergi. Mengganti infrastruktur inti sebuah bank bukanlah tugas yang bisa diselesaikan dalam waktu singkat. Jadi, kamu harus beradaptasi.

XML vs JSON: Perbedaan Struktur yang Sebenarnya Menyebabkan Kesulitan

Sebelum kamu mulai mengonversi, penting untuk memahami mengapa konversi dari XML ke JSON bukan sekadar pertukaran format. Kedua format tersebut memodelkan data secara berbeda, dan perbedaan ini menciptakan masalah nyata.

Perbandingan Sampingan: Data yang Sama dalam Kedua Format

Ambil pesanan pelanggan sederhana. Ini adalah versi XML-nya:

<order id="ORD-1042" currency="GBP">
  <customer>
    <name>Alice Martin</name>
    <email>alice@example.com</email>
  </customer>
  <items>
    <item sku="PRD-001">
      <description>Wireless Keyboard</description>
      <quantity>1</quantity>
      <price>49.99</price>
    </item>
    <item sku="PRD-007">
      <description>USB-C Hub</description>
      <quantity>2</quantity>
      <price>29.99</price>
    </item>
  </items>
</order>

Dan ini adalah versi JSON-nya:

{
  "order": {
    "@id": "ORD-1042",
    "@currency": "GBP",
    "customer": {
      "name": "Alice Martin",
      "email": "alice@example.com"
    },
    "items": {
      "item": [
        {
          "@sku": "PRD-001",
          "description": "Wireless Keyboard",
          "quantity": "1",
          "price": "49.99"
        },
        {
          "@sku": "PRD-007",
          "description": "USB-C Hub",
          "quantity": "2",
          "price": "29.99"
        }
      ]
    }
  }
}

Sudah kamu lihat titik ketegangan struktur. Mari kita bahas satu per satu.

Atribut vs Kunci

Elemen XML dapat membawa atribut (id="ORD-1042") bersama elemen anak dan konten teks. JSON tidak memiliki konsep atribut — semua hal adalah pasangan kunci-nilai. Konvensi umum adalah memasukkan atribut dengan awalan @ saat mengonversi, memberikan kamu "@id": "ORD-1042". Beberapa parser menggunakan $ atau memperluasnya secara keseluruhan. Konvensi ini penting karena kode yang menerima harus tahu prefix mana yang diharapkan.

Array vs Elemen yang Diulang

Ini sering mengejutkan pengembang. Dalam JSON, array adalah eksplisit: [...]. Dalam XML, tidak ada perbedaan seperti itu — elemen yang diulang secara bersamaan secara implisit merupakan daftar. Parser yang melihat satu <item> elemen mungkin mengembalikan objek. Dua <item> elemen? Ini mengembalikan array. Kode kamu rusak ketika API mengembalikan satu hasil.

Solusinya adalah memaksa array untuk bidang yang diketahui sebagai daftar, atau menggunakan library yang mempertahankan informasi tipe. Saat kamu mengonversi data satu kali, periksa apakah bidang yang tampaknya sebagai satu objek mungkin menjadi daftar dalam payload produksi.

Konten Teks dan Konten Campuran

Elemen XML dapat mengandung konten teks dan elemen anak secara bersamaan (konten campuran). JSON tidak dapat merepresentasikan ini secara bersih. Parser menangani ini secara berbeda — beberapa menggunakan kunci #text , lainnya menggunakan _, lainnya hanya melewatkan konten campuran. Jika kamu mengonversi XML dengan konten campuran, periksa hasilnya secara manual.

Namespace

Respons SOAP penuh dengan namespace XML: <ns2:getOrderResponse xmlns:ns2="http://...">. Menurut parser yang kamu gunakan, ini bisa dihapus, dikompres ke nama kunci (ns2:getOrderResponse), atau dipetakan ke URI. Sebagian besar waktu kamu ingin menghapusnya, tetapi jika dua namespace memiliki nama elemen yang sama, kamu akan kehilangan perbedaan. Ketahui apa yang kamu kerjakan sebelum mengasumsikan outputnya bersih.

Jalan Cepat: Konversi XML Online Tanpa Menulis Parser

Jika kamu sedang memperbaiki respons API, mempelajari skema XML yang tidak dikenal, atau melakukan konversi satu kali, menulis parser terlalu berlebihan. Gunakan Konverter XML ke JSON — tempel XML kamu, dapatkan JSON yang bersih secara langsung, dan periksa strukturnya sebelum menulis kode apa pun.

Ini menangani atribut (dengan konvensi awalan @ ), elemen yang saling terkait, elemen yang diulang sebagai array, dan mempertahankan konten teks — yang mencakup sebagian besar payload API dunia nyata. Sangat berguna untuk memahami secara cepat apa tampilan respons SOAP sebenarnya setelah selubungnya dihilangkan.

Konversi Programatis: Apa yang Harus Digunakan di Produksi

Untuk kode produksi yang mengintegrasikan dengan API XML, kamu ingin menggunakan library yang tepat, bukan membuat parser secara manual. Berikut adalah pilihan utama berdasarkan bahasa:

JavaScript / Node.js

import { XMLParser } from 'fast-xml-parser';

const parser = new XMLParser({
  ignoreAttributes: false,
  attributeNamePrefix: '@',
  isArray: (name) => ['item', 'product', 'order'].includes(name),
});

const result = parser.parse(xmlString);

fast-xml-parser adalah pilihan terbaik untuk Node.js. Gunakan isArray untuk memaksa pengolahan array untuk elemen daftar yang diketahui — ini mencegah bug ketidaksesuaian antara satu item dan array yang akan menyerang kamu di produksi.

Ular piton

import xmltodict

with open('response.xml') as f:
    data = xmltodict.parse(f.read())

import json
print(json.dumps(data, indent=2))

xmltodict adalah pilihan standar di Python. Ini menggunakan konvensi @ untuk atribut dan #text untuk node teks. Catat bahwa ini mengembalikan objek OrderedDictyang dapat diserialisasi dengan baik menggunakan json.dumps.

PHP

$xml = simplexml_load_string($xmlString);
$json = json_encode($xml);
$data = json_decode($json, true);

PHP’s simplexml_load_string + json_encode adalah jalur cepat, tetapi mengelola atribut secara tidak konsisten dan dapat kehilangan data dalam kasus ekstrem. Untuk pekerjaan produksi pada respons SOAP, pertimbangkan DOMDocument dengan LIBXML_NOBLANKS atau library khusus.

Kesalahan Umum yang Harus Diperhatikan

  • Angka muncul sebagai string. XML tidak memiliki tipe numerik — semuanya adalah teks. Field harga kamu akan menjadi "49.99", bukan 49.99. Konversi secara eksplisit setelah konversi.
  • Nilai boolean tetap sebagai string. <active>true</active> menjadi "active": "true". Periksa sebelum digunakan dalam kondisional.
  • Elemen kosong menjadi null atau objek kosong. <middleName/> mungkin dikonversi menjadi null, "", atau {} tergantung pada parser. Uji kasus ekstrem.
  • Bagian CDATA mungkin atau tidak disimpan. Jika API menggunakan CDATA untuk menghindari konten HTML, verifikasi parsermu mengolahnya dan tidak menghilangkan konten secara diam-diam.
  • Urutan tidak dijamin. Urutan elemen XML bisa sangat penting dalam beberapa skema; urutan kunci objek JSON tidak. Jika urutan penting bagi sistem penerima, tangani secara eksplisit.

Bekerja dengan SOAP Secara Khusus

SOAP menambahkan lapisan lain di atas XML: setiap respons dibungkus dalam sebuah <Envelope> dengan <Body>, sering kali diberi deklarasi namespace dan blok <Header> . Sebelum dikonversi ke JSON, kamu biasanya ingin mengambil hanya konten tubuhnya.

Di Python dengan zeep (klien SOAP), kamu mendapatkan objek Python langsung dan tidak perlu memarsing XML secara manual. Di Node.js, soap dan strong-soap lakukan hal yang sama. Jika kamu mengakses endpoint SOAP secara mentah dengan fetch atau axios, kamu harus menghilangkan selubung secara manual sebelum menjalankan konverter XML ke JSON.

Untuk inspeksi cepat respons SOAP, Konverter XML ke JSON sangat berguna — tempel seluruh selubung, lihat struktur lengkapnya, dan tentukan jalur ke data yang kamu butuhkan.

Terima Kehadiran Kebenaran dan Lanjutkan

Ada jenis kesedihan khusus yang muncul ketika kamu menyadari proyek greenfieldmu harus mengintegrasikan dengan API SOAP yang dibangun pada tahun 2003. Biarkan dirimu merasakannya, lalu lanjutkan. XML adalah masalah yang sudah terpecahkan — parser sudah matang, alat konversi tersedia, dan kejutan-kejutan telah dikaji dengan baik. Kamu bukan satu-satunya pengembang yang menatap 400 baris selubung.

Gunakan library yang tepat untuk bahasa yang kamu gunakan, tangani konversi tipe secara eksplisit, paksa array untuk bidang daftar yang diketahui, dan uji dengan payload nyata, bukan contoh ideal yang ditampilkan di dokumen API. Dokumen akan menunjukkan satu item; produksi akan mengirimkan lima puluh.

Dan untuk pekerjaan eksploratif — memahami skema XML yang tidak dikenal, memvalidasi konversi sebelum menulis kode — tetap simpan Konverter XML ke JSON dalam bookmark. Ini lebih cepat daripada membangun skrip setiap kali kamu perlu memeriksa payload.

Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

Papan Skor Telah Tiba!

Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?