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

  1. Membuat instans kelas XmlElementAttribute.

  2. Atur ElementName dari XmlElementAttribute ke "BookID".

  3. Membuat instans kelas XmlAttributes.

  4. Tambahkan objek XmlElementAttribute ke koleksi yang diakses melalui properti XmlElements dari XmlAttributes.

  5. Membuat instans kelas XmlAttributeOverrides.

  6. Tambahkan XmlAttributes ke XmlAttributeOverrides, meneruskan jenis objek yang diambil alih dan nama anggota yang sedang diambil alih.

  7. Buat instans kelas XmlSerializer dengan XmlAttributeOverrides.

  8. 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