Cara: Menentukan Nama Elemen Alternatif untuk Aliran XML
Dengan menggunakan XmlSerializer, Anda dapat mengeluarkan lebih dari satu aliran XML dengan set kelas yang sama. Anda mungkin ingin melakukan ini karena dua layanan Web XML yang berbeda memerlukan informasi dasar yang sama, hanya dengan sedikit perbedaan. Misalnya, bayangkan dua layanan Web XML yang memproses pesanan buku, dan dengan demikian keduanya memerlukan nomor ISBN. Satu layanan menggunakan tag <ISBN> sementara yang kedua menggunakan tag <BookID>. Anda memiliki kelas bernama Book
yang berisi bidang bernama ISBN
. Ketika instans kelas Book
diserialisasikan, secara default, instans itu akan menggunakan nama anggota (ISBN) sebagai nama elemen tag. Untuk layanan Web XML pertama, hasilnya sudah seperti yang diharapkan. Namun, untuk mengirim aliran XML ke layanan Web XML kedua, Anda harus mengambil alih serialisasi sehingga nama elemen tag menjadi BookID
.
Membuat aliran XML dengan nama elemen alternatif
Membuat instans kelas XmlElementAttribute.
Atur ElementName dari XmlElementAttribute ke "BookID".
Membuat instans kelas XmlAttributes.
Tambahkan objek
XmlElementAttribute
ke koleksi yang diakses melalui properti XmlElements dari XmlAttributes.Membuat instans kelas XmlAttributeOverrides.
Tambahkan
XmlAttributes
ke XmlAttributeOverrides, meneruskan jenis objek yang diambil alih dan nama anggota yang sedang diambil alih.Buat instans kelas
XmlSerializer
denganXmlAttributeOverrides
.Buat instans kelas
Book
, lalu lakukan serialisasi atau deserialisasi.
Contoh
Public Function SerializeOverride()
' Creates an XmlElementAttribute with the alternate name.
Dim myElementAttribute As XmlElementAttribute = _
New XmlElementAttribute()
myElementAttribute.ElementName = "BookID"
Dim myAttributes As XmlAttributes = New XmlAttributes()
myAttributes.XmlElements.Add(myElementAttribute)
Dim myOverrides As XmlAttributeOverrides = New XmlAttributeOverrides()
myOverrides.Add(typeof(Book), "ISBN", myAttributes)
Dim mySerializer As XmlSerializer = _
New XmlSerializer(GetType(Book), myOverrides)
Dim b As Book = New Book()
b.ISBN = "123456789"
' Creates a StreamWriter to write the XML stream to.
Dim writer As StreamWriter = New StreamWriter("Book.xml")
mySerializer.Serialize(writer, b);
End Class
public void SerializeOverride()
{
// Creates an XmlElementAttribute with the alternate name.
XmlElementAttribute myElementAttribute = new XmlElementAttribute();
myElementAttribute.ElementName = "BookID";
XmlAttributes myAttributes = new XmlAttributes();
myAttributes.XmlElements.Add(myElementAttribute);
XmlAttributeOverrides myOverrides = new XmlAttributeOverrides();
myOverrides.Add(typeof(Book), "ISBN", myAttributes);
XmlSerializer mySerializer =
new XmlSerializer(typeof(Book), myOverrides);
Book b = new Book();
b.ISBN = "123456789";
// Creates a StreamWriter to write the XML stream to.
StreamWriter writer = new StreamWriter("Book.xml");
mySerializer.Serialize(writer, b);
}
Aliran XML dapat menyerupai berikut.
<Book>
<BookID>123456789</BookID>
</Book>
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk