0Pricing
Go Academy · Pelajaran

encoding/xml

Bekerja dengan XML

encoding/xml adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Bekerja dengan XML

XML adalah format berbasis tag yang panjang dan masih umum digunakan dalam sistem lama serta konfigurasi. Paket Go encoding/xml melakukan marshal dan unmarshal, seperti paket json.

Marshal ke XML

xml.Marshal mengubah nilai Go menjadi byte XML.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string
	Age  int
}

func main() {
	b, _ := xml.Marshal(User{"Ann", 30})
	fmt.Println(string(b))
}

Tag XML

Tag xml mengatur nama elemen, sama seperti tag json mengatur kunci JSON.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string "xml:\"name\""
}

func main() {
	b, _ := xml.Marshal(User{"Ann"})
	fmt.Println(string(b))
}

Elemen Akar dengan XMLName

Bidang bertipe xml.Name yang bernama XMLName menetapkan nama elemen akar.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	XMLName xml.Name "xml:\"user\""
	Name    string   "xml:\"name\""
}

func main() {
	b, _ := xml.Marshal(User{Name: "Ann"})
	fmt.Println(string(b))
}

Atribut

Tambahkan ,attr ke sebuah tag untuk menjadikan bidang sebagai atribut XML, bukan elemen anak.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	XMLName xml.Name "xml:\"user\""
	ID      int      "xml:\"id,attr\""
	Name    string   "xml:\"name\""
}

func main() {
	b, _ := xml.Marshal(User{ID: 7, Name: "Ann"})
	fmt.Println(string(b))
}

Unmarshal XML

xml.Unmarshal menguraikan byte XML ke dalam pointer, dengan mencocokkan nama elemen dengan tag.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string "xml:\"name\""
}

func main() {
	var u User
	xml.Unmarshal([]byte("<User><name>Bob</name></User>"), &u)
	fmt.Println(u.Name)
}

Elemen Bersarang

Struktur bersarang dipetakan ke elemen XML bersarang, sehingga membentuk sebuah pohon.

package main

import (
	"encoding/xml"
	"fmt"
)

type Address struct {
	City string "xml:\"city\""
}
type User struct {
	Name    string  "xml:\"name\""
	Address Address "xml:\"address\""
}

func main() {
	b, _ := xml.Marshal(User{"Ann", Address{"Rome"}})
	fmt.Println(string(b))
}

XML Berformat Rapi

xml.MarshalIndent memformat keluaran dengan indentasi agar mudah dibaca.

package main

import (
	"encoding/xml"
	"fmt"
)

type User struct {
	Name string "xml:\"name\""
}

func main() {
	b, _ := xml.MarshalIndent(User{"Ann"}, "", "  ")
	fmt.Println(string(b))
}

Elemen Berulang

Bidang slice menjadi rangkaian elemen XML berulang, satu elemen untuk setiap item.

package main

import (
	"encoding/xml"
	"fmt"
)

type List struct {
	Items []string "xml:\"item\""
}

func main() {
	b, _ := xml.Marshal(List{Items: []string{"a", "b"}})
	fmt.Println(string(b))
}

JSON Dibandingkan dengan XML

API-nya saling menyerupai: Marshal, Unmarshal, MarshalIndent, dan tag struktur. XML menambahkan atribut serta konsep akar XMLName. Pilih JSON untuk API baru; gunakan XML untuk sistem lama.

Deklarasi Header

Konstanta xml.Header menyimpan string deklarasi XML standar yang dapat Anda tambahkan di awal keluaran untuk membuat dokumen lengkap.

package main

import (
	"encoding/xml"
	"fmt"
)

func main() {
	fmt.Print(xml.Header)
}

Pemeriksaan Singkat

Apa fungsi opsi ,attr pada tag struktur xml?

Ringkasan

encoding/xml:

  • xml.Marshal / Unmarshal meniru API json
  • Tag xml memberi nama elemen; ,attr membuat atribut
  • XMLName menetapkan akar; slice mengulang elemen

Pertanyaan yang Sering Diajukan

Apakah pelajaran “encoding/xml” gratis?

Ya — teks lengkap “encoding/xml” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “encoding/xml”?

Bekerja dengan XML Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “encoding/xml” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Tinjauan encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob dan Encoding Biner
← Kembali ke Go Academy