Nasıl yapılır: XML Akışı için Alternatif Öğe Adı Belirtme

XmlSerializerkullanarak, aynı sınıf kümesiyle birden fazla XML akışı oluşturabilirsiniz. İki farklı XML Web Hizmetleri aynı temel bilgileri, yalnızca küçük farkları gerektirdiğinden bunu isteyebilirsiniz. Örneğin, siparişler books için işlemi iki XML Web Hizmetleri varsayalım ve bu nedenle her ikisi de ISBN numaraları gerektirir. Bir hizmet ISBN> etiketini<, ikincisi ise BookID> etiketini <kullanır. Adlı bir sınıf sahip Book adında bir alan içeren ISBN. Örneği, Book sınıf serileştirildiği, varsayılan olarak, üye adı (ISBN) etiket öğe adı kullanacağız. İlk XML Web hizmeti için beklendiği gibi budur. Ancak XML akışını ikinci XML Web hizmetine göndermek için, etiketin öğe adının BookIDolması için serileştirmeyi geçersiz kılmanız gerekir.

Alternatif öğe adıyla XML akışı oluşturmak için

  1. Öğesinin bir örneğini oluşturur XmlElementAttribute sınıfı.

  2. Ayarlama ElementName , XmlElementAttribute "BookID" için.

  3. Öğesinin bir örneğini oluşturur XmlAttributes sınıfı.

  4. Ekle XmlElementAttribute nesnesini aracılığıyla erişilebilen koleksiyonuna XmlElements özelliği XmlAttributes .

  5. Öğesinin bir örneğini oluşturur XmlAttributeOverrides sınıfı.

  6. Ekle XmlAttributes için XmlAttributeOverrides, geçersiz kılmak için nesne türü ve kılınmasını üyenin adını geçirerek.

  7. Öğesinin bir örneğini oluşturur XmlSerializer ile XmlAttributeOverrides.

  8. Öğesinin bir örneğini oluşturur Book sınıfının ve serileştirmek veya bu seri.

Örnek

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);  
}  

XML akışı aşağıdakine benzer olabilir.

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

Ayrıca bkz.