Postupy: Zadání alternativního názvu elementu pro XML stream
Pomocí XmlSerializer, můžete vygenerovat více než jeden datový proud XML se stejnou sadou tříd. Můžete to provést, protože dvě různé webové služby XML vyžadují stejné základní informace s pouze mírné rozdíly. Představte si například dvě XML webové služby, které zpracovávají objednávky pro knihy a obě vyžadují tedy čísla ISBN. Jedna služba používá značku <ISBN> , zatímco druhá používá k <označení BookID>. Máte třídu s názvem Book
obsahující pole s názvem ISBN
. Pokud instance Book
serializován třídy, standardně použije název člena (ISBN) jako název elementu značky. U první webové služby XML je podle očekávání. Pokud chcete odeslat datový proud XML druhý webové služby XML, je nutné přepsat serializace tak, aby byl název elementu na značku, ale BookID
.
Chcete-li vytvořit datový proud XML s názvem alternativní elementu
Vytvořit instanci XmlElementAttribute třídy.
Nastavte ElementName z XmlElementAttribute na "BookID".
Vytvořit instanci XmlAttributes třídy.
Přidat
XmlElementAttribute
do kolekce přistupovat prostřednictvím XmlElements vlastnost XmlAttributes .Vytvořit instanci XmlAttributeOverrides třídy.
Přidat
XmlAttributes
k XmlAttributeOverrides, předávání typ objektu určeného k přepsání a název člena přepsání.Vytvořit instanci
XmlSerializer
třídy sXmlAttributeOverrides
.Vytvořit instanci
Book
třídy a serializaci nebo deserializaci ji.
Příklad
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);
}
Datový proud XML může vypadat takto.
<Book>
<BookID>123456789</BookID>
</Book>