Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przy użyciu XmlSerializer, można wygenerować więcej niż jeden strumień XML z tym samym zestawem klas. Można to zrobić, ponieważ na tym samym podstawowe informacje o różnice tylko nieznaczne wymaga dwóch różnych usług sieci Web XML. Załóżmy na przykład, że dwie usługi sieci Web XML przetwarzają zamówienia książek, a w związku z tym obie wymagają numerów ISBN. Jedna usługa używa tagu <ISBN> , podczas gdy drugi używa tagu <BookID>. Masz klasę o nazwie Book
zawiera pole o nazwie ISBN
. Jeśli wystąpienie Book
klasy jest serializowane, będzie domyślnie używać nazwy składowej (ISBN) jako nazwy elementu tag. W przypadku pierwszego usługi sieci Web XML jest zgodnie z oczekiwaniami. Ale wysyłania strumień XML do drugiego usługi sieci Web XML, konieczne jest przesłonięcie serializacji tak, aby nazwy elementu znacznika BookID
.
Aby utworzyć strumień XML zawierających nazwę elementu alternatywny
Utworzenie wystąpienia XmlElementAttribute klasy.
Ustaw ElementName z XmlElementAttribute do "BookID".
Utworzenie wystąpienia XmlAttributes klasy.
Dodaj
XmlElementAttribute
do kolekcji udostępniane za pośrednictwem XmlElements właściwości XmlAttributes .Utworzenie wystąpienia XmlAttributeOverrides klasy.
Dodaj
XmlAttributes
do XmlAttributeOverrides, przekazując typ obiektu do zastępowania i nazwę elementu zastępowaniu.Utworzenie wystąpienia
XmlSerializer
klasy zXmlAttributeOverrides
.Utworzenie wystąpienia
Book
klasy, a serializacji lub deserializacji go.
Przykład
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);
}
Strumień XML może wyglądać w następujący sposób.
<Book>
<BookID>123456789</BookID>
</Book>