Microsoft telah menyadari pentingnya data serial, sehingga telah menyertakan namespace System.Runtime.Serialization dan System.Xml.Serialization dalam kerangka .NET untuk menyediakan fungsi serialisasi dan memberi pengguna kemampuan untuk menulis metode serialisasi mereka sendiri . Namespace System.Xml.Serialization menyediakan metode dasar untuk membuat serialisasi suatu objek ke dalam format XML. Mari kita lihat cara menggunakan metode ini.
Pesona XML
XML berseri mengacu pada proses penyimpanan bidang publik dan atribut suatu objek ke dalam format serial (di sini, format XML) untuk kenyamanan penyimpanan atau transmisi. Deserialisasi adalah proses menggunakan informasi status serial untuk memulihkan objek dari status serial XML ke status aslinya. Oleh karena itu, Anda dapat menganggap serialisasi sebagai metode menyimpan status suatu objek ke aliran atau buffer.
Tujuan serialisasi adalah penyimpanan data dan konversi data. Penyimpanan data mengacu pada penyimpanan data di seluruh sesi pengguna. Ketika aplikasi ditutup, data disimpan (diserialisasi) dan ketika pengguna kembali, data dimuat ulang (dideserialisasi). Konversi data mengacu pada transformasi data ke dalam format yang dapat dipahami oleh sistem lain. Menggunakan serialisasi dan XML, konversi data dapat dilakukan dengan mudah.
Data dalam objek dapat berupa kelas, metode, properti, tipe pribadi, array, atau bahkan XML yang tertanam dalam objek System.Xml.XmlElement atau System.Xml.XmlAttribute.
Kelas kunci dalam namespace System.Xml.Serialization adalah XmlSerializer. Tentu saja, namespace ini juga mencakup kelas-kelas lain yang terkait dengan aspek lain dari XML dan SOAP, namun fokus kami adalah pada kelas XmlSerializer.
XmlSerializer
Kelas XmlSerializer menyediakan metode untuk membuat serialisasi objek menjadi file XML dan deserialisasi dokumen XML menjadi objek. Hal ini juga memungkinkan pengguna untuk menentukan bagaimana objek dikonversi ke XML. Anda dapat meneruskan tipe objek yang akan diserialkan sebagai parameter ke konstruktor kelas. Kode C# berikut mengilustrasikan penggunaan konstruktor.
XmlSerializer ser = new XmlSerializer(typeof(objectToSerialize));
Berikut ini adalah kode VB.NET yang setara:
Dim ser As New XmlSerializer(GetType(objectToSerialize))
Proses serialisasi sebenarnya diimplementasikan dalam metode Serialize dari kelas XmlSerializer. Metode ini memungkinkan pemanggilan objek TextWriter, Stream dan XmlWriter selama serialisasi. Contoh kode berikut mengilustrasikan cara memanggil metode ini. Dalam contoh ini sebuah objek diserialkan dan disimpan ke file di disk lokal. Contohnya dimulai dengan deklarasi kelas, diikuti dengan kode sumber serial.
menggunakan Sistem;
Serialisasi Pembangun namespace {
alamat kelas publik {
Alamat Publik() {}
string publik Alamat1;
string publik Alamat2;
string publik Kota;
Status string publik;
Zip string publik;
string publik Negara;
} }
menggunakan Sistem;
Serialisasi Pembangun namespace {
kelas publik Penulis {
Penulis publik() {} }
string publik Nama Depan;
string publik Nama Tengah;
string publik Nama Belakang;
Judul string publik;
string publik Jenis Kelamin;
Alamat publik AddressObject;
} }
Serialisasi Pembangun namespace {
Buku kelas publik {
Buku publik() {} }
Judul string publik;
Penulis publik AuthorObject;
ISBN string publik;
Harga Eceran ganda umum;
string publik Penerbit;
}}
menggunakan Sistem;
menggunakan System.Xml.Serialisasi;
menggunakan Sistem.IO;
Serialisasi Pembangun namespace {
kelas Kelas Tes {
kekosongan statis Utama(string[] args) {
Buku BookObject = Buku baru();
XmlSerializer ser = XmlSerializer baru(typeof(Buku));
Penulis TextWriter = new StreamWriter("booktest.xml");
BookObject.Title = "LotusScript Praktis";
Objek Buku.ISBN = "1884777767";
BookObject.Publisher = "Manning Publikasi";
BookObject.Harga Eceran = 43,95;
BookObject.AuthorObject = Penulis baru();
BookObject.AuthorObject.FirstName = "Tony";
BookObject.AuthorObject.LastName = "Patton";
BookObject.AuthorObject.Gender = "Pria";
BookObject.AuthorObject.AddressObject = Alamat baru();
BookObject.AuthorObject.AddressObject.Address1 = "1 Jalan Utama";
BookObject.AuthorObject.AddressObject.City = "Di Mana Saja";
BookObject.AuthorObject.AddressObject.State = "KY";
BookObject.AuthorObject.AddressObject.Zip = "40000";
BookObject.AuthorObject.AddressObject.Country = "AS";
ser.Serialize(penulis, BookObject);
penulis.Tutup();
} } }
Kode di atas mengubah tiga objek menjadi satu objek, sehingga menghasilkan file XML selama proses serialisasi. Berikut ini adalah dokumen XML yang dihasilkan oleh contoh program:
<?xml version="1.0" coding="utf-8"?>
<Buku xmlns:xsd=" http://www.w3.org/2001/XMLSchema "
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance ">
<Judul>LotusScript Praktis</Judul>
<Objek Penulis>
<Nama Depan>Tony</Nama Depan>
<LastName>Patton</LastName>
<Jenis Kelamin>Pria</Jenis Kelamin>
<AlamatObjek>
<Address1>1 Jalan Utama</Address1>
<Kota>Di Mana Saja</Kota>
<Negara Bagian>KY</Negara Bagian>
<Zip>40000</Zip>
<Negara>AS</Negara>
</AlamatObjek>
</Objek Penulis>
<ISBN>1884777767 </ISBN>
<Harga Eceran>43,95</Harga Eceran>
<Publisher>Manning Publikasi</Publisher>
</Book>
Perhatikan bahwa proses serialisasi juga dapat menangani penumpukan data objek. Data diubah ke dalam format yang dapat dikenali, yang memfasilitasi pemuatan ulang data (deserialisasi) dan transfer data ke sistem lain. Selama proses transfer data, sistem penerima perlu mengetahui format file XML (jika tidak mengetahuinya sebelumnya). Oleh karena itu, file skema XML perlu disediakan. Alat XSD.exe di .NET Framework dapat menghasilkan file skema untuk XML serial.
Berikut contoh kode yang ditulis di VB.NET:
Public Class Address
Alamat Publik1 Sebagai String
Alamat Publik2 Sebagai String
Kota Umum Sebagai String
Status Publik Sebagai String
Zip Publik Sebagai String
Negara Publik Sebagai String
Kelas Akhir
Penulis Kelas Umum
Nama Depan Publik Sebagai String
Nama Tengah Publik Sebagai String
Nama Belakang Publik Sebagai String
Judul Publik Sebagai String
Gender Publik Sebagai String
Alamat PublikObjek Sebagai Alamat
Kelas Akhir
Buku Kelas Umum
Objek Penulis Publik Sebagai Penulis
Judul Publik Sebagai String
ISBN Publik Sebagai String
Harga Eceran Publik Dua Kali Lipat
Penerbit Publik Sebagai String
Kelas Akhir
Impor System.Xml.Serialization
Sistem Impor.IO
Modul Modul1
Sub Utama()
Redupkan Objek Buku Sebagai Buku Baru
Redupkan sebagai XmlSerializer Baru (GetType (Buku))
Redupkan penulis Sebagai New StreamWriter("booktest.xml")
Dengan BookObject
.Judul = "LotusScript Praktis"
.ISBN = "1884777767"
.Publisher = "Manning Publikasi"
.Harga Eceran = 43,95
.AuthorObject = Penulis Baru
.AuthorObject.FirstName = "Tony"
.AuthorObject.LastName = "Patton"
.AuthorObject.Gender = "Pria"
.AuthorObject.AddressObject = Alamat Baru
.AuthorObject.AddressObject.Address1 = "1 Jalan Utama"
.AuthorObject.AddressObject.City = "Di Mana Saja"
.AuthorObject.AddressObject.State = "KY"
.AuthorObject.AddressObject.Zip = "40000"
.AuthorObject.AddressObject.Country = "AS"
Akhiri Dengan
ser.Serialize(penulis, BookObject)
penulis.Tutup()
Akhiri Sub
Keluaran kontrol
Modul Akhir
Proses serialisasi menghasilkan file XML standar dan anggota data diubah menjadi elemen XML. Namun, tidak semua anggota data menjadi elemen. Anda dapat mengontrol file XML keluaran dengan menambahkan beberapa tag di kode kelas. Dengan cara ini, anggota data dapat dikonversi menjadi atribut XML, bukan elemen, atau diabaikan begitu saja. Contoh berikut adalah kode VB.NET kelas buku yang dimodifikasi.
Buku Kelas Umum
Objek Penulis Publik Sebagai Penulis
Judul Publik Sebagai String
<Sistem.Xml.Serialization.XmlAttribute()> _
ISBN Publik Sebagai String
<Sistem.Xml.Serialization.XmlIgnoreAttribute()> _
Harga Eceran Publik Dua Kali Lipat
Penerbit Publik Sebagai String
Kelas Akhir
Kode ini memberitahu sistem untuk menggunakan ISBN anggota kelas sebagai atribut XML saat membuat file XML, dan mengabaikan anggota RetailPrice. Perubahan ini dapat dilihat pada file XML yang dihasilkan:
<?xml version="1.0" coding="utf-8"?>
<Buku xmlns:xsd=" http://www.w3.org/2001/XMLSchema "
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " ISBN="1884777767 ">
<Objek Penulis>
<Nama Depan>Tony</Nama Depan>
<LastName>Patton</LastName>
<Jenis Kelamin>Pria</Jenis Kelamin>
<AlamatObjek>
<Address1>1 Jalan Utama</Address1>
<Kota>Di Mana Saja</Kota>
<Negara Bagian>KY</Negara Bagian>
<Zip>40000</Zip>
<Negara>AS</Negara>
</AlamatObjek>
</Objek Penulis>
<Judul>LotusScript Praktis</Judul>
<Publisher>Manning Publikasi</Publisher>
</Book>
Berikut ini adalah kode C# yang sesuai:
public class Book {
Buku publik() {} }
Judul string publik;
Penulis publik AuthorObject;
[Sistem.Xml.Serialisasi.XmlAttribute()]
ISBN string publik;
[Sistem.Xml.Serialization.XmlIgnoreAttribute()]
Harga Eceran ganda umum;
string publik Penerbit;
}
Penjelasan di atas hanya menyebutkan secara singkat dua simbol penandaan. Silakan baca dokumentasi .NET untuk notasi markup lengkap.
Deserialisasi data yang dideserialisasi dapat dengan mudah dilakukan dengan memanggil metode Deserialize dari kelas XmlSerializer. Fragmen program VB.NET berikut melengkapi deserialisasi dokumen XML yang disebutkan di atas:
Redupkan BookObject As New Book
Redupkan sebagai XmlSerializer Baru (GetType (Buku))
Redupkan fs Sebagai System.IO.FileStream Baru("booktest.xml", FileMode.Open)
Redupkan pembaca Sebagai Sistem Baru.XML.XmlTextReader(fs)
BookObject = CType(ser.Deserialize(reader), Book)
Program ini menyimpan data hasil ke dalam memori untuk digunakan nanti. Berikut adalah kode C# yang setara:
XmlSerializer ser = new XmlSerializer(typeof(Book));
System.IO.FileStreamfs = Sistem.IO.FileStream baru("booktest.xml",
FileMode.Buka);
Pembaca System.Xml.XmlTextReader = System.Xml.XmlTextReader(fs);
Buku BookObject = (Buku)(ser.Deserialize(reader));
--------------------------------------------------- -
Tentang Penulis: Tony Patton adalah pengembang aplikasi profesional dengan pengetahuan luas dan bersertifikat Java, VB, Lotus, dan XML.