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 BookID
olması için serileştirmeyi geçersiz kılmanız gerekir.
Alternatif öğe adıyla XML akışı oluşturmak için
Öğesinin bir örneğini oluşturur XmlElementAttribute sınıfı.
Ayarlama ElementName , XmlElementAttribute "BookID" için.
Öğesinin bir örneğini oluşturur XmlAttributes sınıfı.
Ekle
XmlElementAttribute
nesnesini aracılığıyla erişilebilen koleksiyonuna XmlElements özelliği XmlAttributes .Öğesinin bir örneğini oluşturur XmlAttributeOverrides sınıfı.
Ekle
XmlAttributes
için XmlAttributeOverrides, geçersiz kılmak için nesne türü ve kılınmasını üyenin adını geçirerek.Öğesinin bir örneğini oluşturur
XmlSerializer
ileXmlAttributeOverrides
.Öğ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>