XML (eXtensible Markup Language) adalah format teks untuk menyimpan dan mentransmisikan data terstruktur menggunakan tag kustom. Ini banyak digunakan dalam file konfigurasi, layanan web, dan pengembangan Android. Menurut konsorsium W3C, spesifikasi XML tetap menjadi standar yang stabil sejak 2008. XML menyediakan struktur data yang ketat dengan kemungkinan validasi melalui skema.
Poin Utama
XML adalah bahasa markup yang mendefinisikan seperangkat aturan untuk mengkodekan dokumen dalam format yang dapat dibaca manusia dan mesin. Tidak seperti HTML, XML tidak memiliki kumpulan tag tetap — pengembang membuat tag sendiri yang sesuai dengan struktur data.
XML dikembangkan oleh konsorsium W3C pada tahun 1996 sebagai subset sederhana dari SGML (Standard Generalized Markup Language). Tujuan utama XML adalah memisahkan konten dan presentasi data. Tidak seperti HTML yang menggambarkan tampilan, XML menggambarkan struktur dan makna data.
Properti utama XML adalah kemampuan perluasannya. Jika tipe data baru muncul dalam proyek, pengembang cukup menambahkan tag baru tanpa mengubah struktur yang ada. Ini membuat XML nyaman untuk penyimpanan data jangka panjang dan pertukaran antar sistem yang berbeda.
Sintaks XML lebih ketat daripada HTML. Setiap tag pembuka harus memiliki tag penutup yang sesuai, atribut ditempatkan dalam tanda kutip, nama tag peka terhadap huruf besar/kecil. Dokumen harus memiliki tepat satu elemen root yang berisi semua elemen lainnya.
Dokumen XML dapat dimulai dengan deklarasi yang menunjukkan versi XML dan encoding. Kemudian diikuti elemen root, di dalamnya dapat terdapat elemen bersarang, atribut, konten teks, dan komentar. Elemen kosong ditulis sebagai
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk001">
<title>XML Developer Guide</title>
<author>John Smith</author>
<price currency="USD">29.99</price>
<published>2026-03-15</published>
</book>
<book id="bk002">
<title>Advanced XML Schemas</title>
<author>Jane Doe</author>
<price currency="USD">49.99</price>
</book>
</catalog>
Well-formed XML harus mematuhi aturan dasar: tag penutup wajib untuk setiap tag pembuka, penyarangan bersifat ketat (persilangan tag dilarang), nilai atribut selalu dalam tanda kutip. Pelanggaran aturan apa pun membuat dokumen tidak valid dan tidak dapat diuraikan.
Ruang nama XML (XML Namespaces) memecahkan masalah konflik nama ketika dalam satu dokumen digunakan elemen dari kamus yang berbeda. Ruang nama ditentukan oleh atribut xmlns dengan URI yang secara unik mengidentifikasi kamus.
XML Schema (XSD) adalah bahasa untuk mendeskripsikan struktur dokumen XML. XSD menentukan elemen dan atribut mana yang diizinkan, tipe datanya, kewajiban, dan batasannya. Skema memungkinkan validasi otomatis dokumen sebelum diproses, yang sangat penting untuk solusi integrasi.
| Teknologi | Tujuan | Contoh |
|---|---|---|
| DTD | Validasi struktur dasar | Lama, lebih sedikit kemampuan |
| XSD | Pengetikan ketat dan validasi | Standar industri |
| RELAX NG | Alternatif ringkas untuk XSD | Lebih sederhana dan lebih mudah dibaca dari XSD |
| XSLT | Transformasi XML ke format lain | XML ke HTML, PDF, CSV |
| XPath | Navigasi dan pemilihan node | Kueri pada pohon XML |
XML memainkan peran kunci dalam pengembangan Android. Sistem operasi Android menggunakan XML untuk mendeskripsikan antarmuka pengguna (file layout), konfigurasi aplikasi (AndroidManifest.xml), sumber daya (string, warna, tema) dan grafik vektor (VectorDrawable). Di iOS, XML lebih jarang digunakan, terutama untuk Storyboard dan file konfigurasi plist.
Di Android, setiap layar aplikasi dijelaskan oleh file XML dengan hierarki komponen View: ConstraintLayout, LinearLayout, TextView, Button. Pendekatan ini memisahkan logika aplikasi dari presentasi, menyederhanakan pemeliharaan dan adaptasi ke berbagai layar. File XML sumber daya memungkinkan lokalisasi aplikasi tanpa mengubah kode.
File layout tipikal berisi ConstraintLayout root dengan elemen bersarang, masing-masing memiliki atribut posisi, ukuran, dan gaya. Android mengkompilasi XML ke format biner AXML untuk mengoptimalkan kinerja saat startup.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/click"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Parsing XML di platform mobile dilakukan dengan dua pendekatan utama: DOM (Document Object Model) memuat seluruh dokumen ke memori sebagai pohon, SAX (Simple API for XML) membaca dokumen secara streaming, memanggil penangan peristiwa. DOM nyaman untuk dokumen kecil, SAX — untuk file besar dengan keterbatasan memori.
Di Android tersedia parser bawaan: XmlPullParser untuk analisis streaming dan DocumentBuilder untuk pendekatan DOM. Di iOS digunakan Foundation XMLParser dengan protokol delegasi. Untuk serialisasi objek ke XML sering digunakan pustaka seperti SimpleXML di PHP atau Jackson XML di Java.
Di Android disarankan menggunakan XmlPullParser untuk parsing XML yang efisien. Parser bekerja dalam mode peristiwa: memanggil next() untuk berpindah ke elemen berikutnya dan mengembalikan tipe peristiwa (START_TAG, TEXT, END_TAG). Ini memungkinkan pemrosesan dokumen dengan ukuran berapa pun dengan konsumsi memori minimal.
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException
fun parseCatalog(parser: XmlPullParser): List<Book> {
val books = mutableListOf<Book>()
var eventType = parser.getEventType()
var currentBook: Book? = null
while (eventType != XmlPullParser.END_DOCUMENT) {
when (eventType) {
XmlPullParser.START_TAG -> {
when (parser.getName()) {
"book" -> currentBook = Book()
"title" -> parser.next()
"author" -> parser.next()
}
}
XmlPullParser.TEXT -> {
currentBook?.apply {
title = parser.getText() ?: ""
}
}
XmlPullParser.END_TAG -> {
if (parser.getName() == "book") {
currentBook?.let { books.add(it) }
}
}
}
eventType = parser.next()
}
return books
}
Contoh penggunaan XML menunjukkan perannya dalam proyek nyata. Selain pengembangan Android, XML digunakan untuk konfigurasi kompilasi, deskripsi data, dan aliran dokumen. Pengetahuan tentang sintaks XML diperlukan untuk bekerja dengan Maven, layanan SOAP, dan banyak alat enterprise.
File pom.xml mendeskripsikan proyek Maven: dependensi, plugin, versi, dan profil kompilasi. Setiap dependensi ditentukan dengan tag groupId, artifactId, dan version. Maven secara otomatis memuat pustaka yang ditentukan dari repositori.
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
</project>
Pilihan antara XML dan JSON tergantung pada kebutuhan spesifik proyek. JSON cocok untuk REST API, aplikasi mobile, dan konfigurasi yang membutuhkan kekompakan dan kecepatan. XML tak tergantikan dalam sistem Enterprise, aliran dokumen, dan pengembangan Android di mana diperlukan validasi ketat, ruang nama, dan transformasi data.
XML unggul dalam skenario penyimpanan dokumen jangka panjang. Berkat skema XSD, dokumen XML dapat divalidasi secara otomatis, yang sangat penting untuk sistem medis, keuangan, dan hukum. Transformasi XSLT memungkinkan pembuatan HTML, PDF, dan format lain dari satu sumber XML, menyederhanakan aliran dokumen.
JSON, pada gilirannya, telah menjadi standar untuk web API dan aplikasi mobile. Kesederhanaan integrasi dengan JavaScript, ukuran lebih kecil, dan kecepatan parsing tinggi menjadikan JSON pilihan utama untuk REST API, pesan WebSocket, dan file konfigurasi. Untuk sebagian besar proyek baru, disarankan memulai dengan JSON dan beralih ke XML hanya jika ada kebutuhan khusus.
Pertanyaan yang Sering Diajukan
XML mendeskripsikan struktur dan konten data, HTML — tampilan dan presentasi. XML memungkinkan pembuatan tag apa pun, HTML memiliki set tetap. XML lebih ketat dalam sintaks: semua tag harus ditutup, HTML mengizinkan tag yang tidak ditutup. XML — untuk data, HTML — untuk tampilan.
XSD (XML Schema Definition) adalah bahasa untuk mendeskripsikan struktur dokumen XML. XSD menentukan elemen dan atribut mana yang diizinkan, tipe datanya, kewajiban, dan batasannya. Skema memungkinkan validasi otomatis dokumen XML sebelum diproses, mencegah kesalahan dan menjamin integritas data.
Di Android untuk parsing XML gunakan XmlPullParser — parser streaming bawaan. Ini bekerja dalam mode peristiwa: memproses START_TAG, TEXT, dan END_TAG dalam satu lingkaran, mengelola memori secara efisien. Untuk dokumen kecil, parser DOM melalui DocumentBuilderFactory yang memuat seluruh dokumen ke memori sebagai pohon node cocok digunakan.
DTD (Document Type Definition) adalah mekanisme validasi lama dengan kemampuan terbatas: tidak mendukung tipe data (semuanya string) dan ruang nama. XSD adalah pengganti modern dengan dukungan untuk tipe data (angka, tanggal, enumerasi), ruang nama, dan perluasan. XSD sendiri adalah dokumen XML, DTD menggunakan sintaksnya sendiri.
Ruang nama mencegah konflik nama ketika dokumen XML menggabungkan elemen dari sumber berbeda. Misalnya, dalam layout Android, tag View bisa berasal dari android.view maupun dari pustaka. Atribut xmlns dengan URI secara unik mengidentifikasi sumber setiap elemen dan atribut.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga