Cara: Menentukan Nama Elemen Alternatif untuk Aliran XML

XmlSerializerDengan menggunakan , Anda dapat menghasilkan lebih dari satu aliran XML dengan serangkaian 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 untuk 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 dari kelas Book diserialisasikan, secara default akan menggunakan nama anggota (ISBN) sebagai nama elemen tag. Untuk layanan Web XML pertama, ini seperti yang diharapkan. Tetapi untuk mengirim aliran XML ke layanan Web XML kedua, Anda harus mengambil alih serialisasi sehingga nama elemen tag adalah BookID.

Untuk membuat aliran XML dengan nama elemen alternatif

  1. Buat instance dari kelas XmlElementAttribute.

  2. Atur ElementName dari XmlElementAttribute ke "BookID".

  3. Buat instance dari kelas XmlAttributes.

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

  5. Buat instance dari kelas XmlAttributeOverrides.

  6. Tambahkan XmlAttributes ke XmlAttributeOverrides, dengan meneruskan jenis objek untuk diganti dan nama anggota yang akan digantikan.

  7. Buat instance kelas XmlSerializer dengan menggunakan XmlAttributeOverrides.

  8. Buat sebuah instans dari kelas Book, dan serialisasi atau deserialisasi.

Example

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 mungkin menyerupai yang berikut ini.

<Book>
    <BookID>123456789</BookID>
</Book>

Lihat juga