XmlObjectSerializer Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia klasę bazową używaną do serializacji obiektów jako strumieni XML lub dokumentów. Ta klasa jest abstrakcyjna.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- Dziedziczenie
-
XmlObjectSerializer
- Pochodne
Przykłady
W poniższym przykładzie pokazano metodę o nazwie WriteObjectWithInstance
, która zawiera parametr XmlObjectSerializer jako parametr. Metoda serializuje obiekt przy użyciu DataContractSerializer metody lub NetDataContractSerializer przez wywołanie WriteObject metody .
public class Test
{
private void WriteObjectWithInstance(XmlObjectSerializer xm, Company graph,
string fileName)
{
// Use either the XmlDataContractSerializer or NetDataContractSerializer,
// or any other class that inherits from XmlObjectSerializer to write with.
Console.WriteLine(xm.GetType());
FileStream fs = new FileStream(fileName, FileMode.Create);
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
xm.WriteObject(writer, graph);
Console.WriteLine("Done writing {0}", fileName);
}
private void Run()
{
// Create the object to write to a file.
Company graph = new Company();
graph.Name = "cohowinery.com";
// Create a DataContractSerializer and a NetDataContractSerializer.
// Pass either one to the WriteObjectWithInstance method.
DataContractSerializer dcs = new DataContractSerializer(typeof(Company));
NetDataContractSerializer ndcs = new NetDataContractSerializer();
WriteObjectWithInstance(dcs, graph, @"datacontract.xml");
WriteObjectWithInstance(ndcs, graph, @"netDatacontract.xml");
}
[DataContract]
public class Company
{
[DataMember]
public string Name;
}
static void Main()
{
try
{
Console.WriteLine("Starting");
Test t = new Test();
t.Run();
Console.WriteLine("Done");
Console.ReadLine();
}
catch (InvalidDataContractException iExc)
{
Console.WriteLine("You have an invalid data contract: ");
Console.WriteLine(iExc.Message);
Console.ReadLine();
}
catch (SerializationException serExc)
{
Console.WriteLine("There is a problem with the instance:");
Console.WriteLine(serExc.Message);
Console.ReadLine();
}
catch (QuotaExceededException qExc)
{
Console.WriteLine("The quota has been exceeded");
Console.WriteLine(qExc.Message);
Console.ReadLine();
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
Console.WriteLine(exc.ToString());
Console.ReadLine();
}
}
Public Class Test
Private Sub WriteObjectWithInstance(ByVal xm As XmlObjectSerializer, _
ByVal graph As Company, ByVal fileName As String)
' Use either the XmlDataContractSerializer or NetDataContractSerializer,
' or any other class that inherits from XmlObjectSerializer to write with.
Console.WriteLine(xm.GetType())
Dim fs As New FileStream(fileName, FileMode.Create)
Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
xm.WriteObject(writer, graph)
Console.WriteLine("Done writing {0}", fileName)
End Sub
Private Sub Run()
' Create the object to write to a file.
Dim graph As New Company()
graph.Name = "cohowinery.com"
' Create a DataContractSerializer and a NetDataContractSerializer.
' Pass either one to the WriteObjectWithInstance method.
Dim dcs As New DataContractSerializer(GetType(Company))
Dim ndcs As New NetDataContractSerializer()
WriteObjectWithInstance(dcs, graph, "datacontract.xml")
WriteObjectWithInstance(ndcs, graph, "netDatacontract.xml")
End Sub
<DataContract()> _
Public Class Company
<DataMember()> _
Public Name As String
End Class
Shared Sub Main()
Try
Console.WriteLine("Starting")
Dim t As New Test()
t.Run()
Console.WriteLine("Done")
Console.ReadLine()
Catch iExc As InvalidDataContractException
Console.WriteLine("You have an invalid data contract: ")
Console.WriteLine(iExc.Message)
Console.ReadLine()
Catch serExc As SerializationException
Console.WriteLine("There is a problem with the instance:")
Console.WriteLine(serExc.Message)
Console.ReadLine()
Catch qExc As QuotaExceededException
Console.WriteLine("The quota has been exceeded")
Console.WriteLine(qExc.Message)
Console.ReadLine()
Catch exc As Exception
Console.WriteLine(exc.Message)
Console.WriteLine(exc.ToString())
Console.ReadLine()
End Try
End Sub
End Class
Uwagi
Rozszerz element , XmlObjectSerializer aby utworzyć własny serializator, aby serializować i deserializować obiekty. DataContractSerializer Zarówno klasa, jak i NetDataContractSerializer klasa dziedziczą z XmlObjectSerializer klasy i są używane do serializacji i deserializacji obiektów, które są zgodne z regułami kontraktu danych (obiekty utworzone przy użyciu DataContractAttributeDataMemberAttributei ).
Uwagi dotyczące implementowania
Podczas dziedziczenia z XmlObjectSerializerprogramu należy zastąpić następujące elementy członkowskie: WriteStartObject(XmlDictionaryWriter, Object), , WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter). IsStartObject Ponadto metody i ReadObject muszą być implementowane do odczytywania i deserializacji.
Konstruktory
XmlObjectSerializer() |
Inicjuje nowe wystąpienie klasy XmlObjectSerializer. |
Metody
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
IsStartObject(XmlDictionaryReader) |
Pobiera wartość określającą, czy XmlDictionaryReader element jest umieszczony nad elementem XML, który można odczytać. |
IsStartObject(XmlReader) |
Pobiera wartość określającą, czy XmlReader element jest umieszczony nad elementem XML, który można odczytać. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ReadObject(Stream) |
Odczytuje strumień XML lub dokument z obiektem Stream i zwraca zdeserializowany obiekt. |
ReadObject(XmlDictionaryReader) |
Odczytuje dokument XML lub strumień za pomocą obiektu XmlDictionaryReader i zwraca obiekt deserializowany. |
ReadObject(XmlDictionaryReader, Boolean) |
Odczytuje strumień XML lub dokument z obiektem XmlDictionaryReader i zwraca zdeserializowany obiekt. Umożliwia również określenie, czy serializator może odczytywać dane przed próbą odczytania go. |
ReadObject(XmlReader) |
Odczytuje dokument XML lub strumień za pomocą obiektu XmlReader i zwraca obiekt deserializowany. |
ReadObject(XmlReader, Boolean) |
Odczytuje dokument XML lub strumień za pomocą XmlReader obiektu i zwraca zdeserializowany obiekt. Umożliwia również określenie, czy serializator może odczytywać dane przed próbą odczytania go. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
WriteEndObject(XmlDictionaryWriter) |
Zapisuje koniec danych obiektu jako zamykający element XML do dokumentu XML lub strumienia za pomocą elementu XmlDictionaryWriter. |
WriteEndObject(XmlWriter) |
Zapisuje koniec danych obiektu jako zamykający element XML do dokumentu XML lub strumienia za pomocą elementu XmlWriter. |
WriteObject(Stream, Object) |
Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu w dokumencie XML lub strumieniu przy użyciu określonego Streamelementu . |
WriteObject(XmlDictionaryWriter, Object) |
Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlDictionaryWriterelementu . |
WriteObject(XmlWriter, Object) |
Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlWriterelementu . |
WriteObjectContent(XmlDictionaryWriter, Object) |
Zapisuje tylko zawartość obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlDictionaryWriterelementu . |
WriteObjectContent(XmlWriter, Object) |
Zapisuje tylko zawartość obiektu w dokumencie XML lub strumieniu o określonym obiekcie XmlWriter. |
WriteStartObject(XmlDictionaryWriter, Object) |
Zapisuje początek danych obiektu jako otwierający element XML przy użyciu określonego XmlDictionaryWriterelementu . |
WriteStartObject(XmlWriter, Object) |
Zapisuje początek danych obiektu jako otwierający element XML przy użyciu określonego XmlWriterelementu . |