XmlObjectSerializer Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt de basisklasse die wordt gebruikt voor het serialiseren van objecten als XML-streams of -documenten. Deze klasse is abstract.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- Overname
-
XmlObjectSerializer
- Afgeleid
Voorbeelden
In het volgende voorbeeld ziet u een methode met de naam WriteObjectWithInstance een XmlObjectSerializer parameter die een parameter bevat. De methode serialiseert een object met behulp van de DataContractSerializer of NetDataContractSerializer door de methode aan te WriteObject roepen.
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
Opmerkingen
Breid het XmlObjectSerializer uit om uw eigen serialisatiefunctie te maken om objecten te serialiseren en deserialiseren. Zowel de DataContractSerializer klasse als de NetDataContractSerializer klasse nemen over van de XmlObjectSerializer klasse en worden gebruikt voor het serialiseren en deserialiseren van objecten die voldoen aan regels voor gegevenscontract (objecten die zijn gemaakt met behulp van de DataContractAttribute en de DataMemberAttribute).
Notities voor uitvoerders
Wanneer u overdrat van XmlObjectSerializer, moet u de volgende leden overschrijven: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Daarnaast moeten de IsStartObject en ReadObject methoden worden geïmplementeerd voor het lezen en deserialiseren.
Constructors
| Name | Description |
|---|---|
| XmlObjectSerializer() |
Initialiseert een nieuw exemplaar van de XmlObjectSerializer klasse. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| IsStartObject(XmlDictionaryReader) |
Hiermee wordt een waarde opgehaald die aangeeft of de positie van het XmlDictionaryReader element via een XML-element dat kan worden gelezen. |
| IsStartObject(XmlReader) |
Hiermee wordt een waarde opgehaald die aangeeft of de positie van het XmlReader element via een XML-element dat kan worden gelezen. |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ReadObject(Stream) |
Leest de XML-stroom of het document met een Stream en retourneert het gedeserialiseerde object. |
| ReadObject(XmlDictionaryReader, Boolean) |
Leest de XML-stroom of het document met een XmlDictionaryReader en retourneert het gedeserialiseerde object. Hiermee kunt u ook opgeven of de serializer de gegevens kan lezen voordat u het probeert te lezen. |
| ReadObject(XmlDictionaryReader) |
Leest het XML-document of de stream met een XmlDictionaryReader en retourneert het gedeserialiseerde object. |
| ReadObject(XmlReader, Boolean) |
Leest het XML-document of de stream met een XmlReader en retourneert het gedeserialiseerde object. Hiermee kunt u ook opgeven of de serializer de gegevens kan lezen voordat u het probeert te lezen. |
| ReadObject(XmlReader) |
Leest het XML-document of de stream met een XmlReader en retourneert het gedeserialiseerde object. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| WriteEndObject(XmlDictionaryWriter) |
Schrijft het einde van de objectgegevens als een sluitend XML-element naar het XML-document of stream met een XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Schrijft het einde van de objectgegevens als een sluitend XML-element naar het XML-document of stream met een XmlWriter. |
| WriteObject(Stream, Object) |
Hiermee schrijft u de volledige inhoud (begin, inhoud en einde) van het object naar het XML-document of stream met de opgegeven Stream. |
| WriteObject(XmlDictionaryWriter, Object) |
Hiermee schrijft u de volledige inhoud (begin, inhoud en einde) van het object naar het XML-document of stream met de opgegeven XmlDictionaryWriter. |
| WriteObject(XmlWriter, Object) |
Hiermee schrijft u de volledige inhoud (begin, inhoud en einde) van het object naar het XML-document of stream met de opgegeven XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Schrijft alleen de inhoud van het object naar het XML-document of de opgegeven XmlDictionaryWriterstream. |
| WriteObjectContent(XmlWriter, Object) |
Schrijft alleen de inhoud van het object naar het XML-document of stream met de opgegeven XmlWriter. |
| WriteStartObject(XmlDictionaryWriter, Object) |
Hiermee schrijft u het begin van de gegevens van het object als een geopend XML-element met behulp van de opgegeven XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Hiermee schrijft u het begin van de gegevens van het object als een geopend XML-element met behulp van de opgegeven XmlWriter. |