XmlObjectSerializer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die Basisklasse bereit, die zum Serialisieren von Objekten als XML-Datenströme oder -dokumente verwendet wird. Diese Klasse ist abstrakt.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- Vererbung
-
XmlObjectSerializer
- Abgeleitet
Beispiele
Das folgende Beispiel zeigt eine Methode mit dem Namen WriteObjectWithInstance eines XmlObjectSerializer Parameters. Die Methode serialisiert ein Objekt mithilfe der DataContractSerializer Methode oder NetDataContractSerializer durch Aufrufen der WriteObject Methode.
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
Hinweise
Erweitern Sie die XmlObjectSerializer Erweiterung, um einen eigenen Serialisierer zu erstellen, um Objekte zu serialisieren und zu deserialisieren. Sowohl die DataContractSerializer Klasse als auch die NetDataContractSerializer Klasse erben von der XmlObjectSerializer Und werden verwendet, um Objekte zu serialisieren und deserialisieren, die datenvertragsregeln entsprechen (Objekte, die mit dem DataContractAttribute und dem DataMemberAttribute) erstellt wurden).
Hinweise für Ausführende
Wenn Sie von XmlObjectSerializererben, müssen Sie die folgenden Member überschreiben: WriteStartObject(XmlDictionaryWriter, Object), , WriteEndObject(XmlDictionaryWriter)WriteObjectContent(XmlDictionaryWriter, Object). Darüber hinaus müssen die IsStartObject Methoden und ReadObject Methoden zum Lesen und Deserialisieren implementiert werden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| XmlObjectSerializer() |
Initialisiert eine neue Instanz der XmlObjectSerializer-Klasse. |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IsStartObject(XmlDictionaryReader) |
Ruft einen Wert ab, der angibt, ob das XmlDictionaryReader Element über einem XML-Element positioniert wird, das gelesen werden kann. |
| IsStartObject(XmlReader) |
Ruft einen Wert ab, der angibt, ob das XmlReader Element über einem XML-Element positioniert wird, das gelesen werden kann. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ReadObject(Stream) |
Liest den XML-Datenstrom oder das Dokument mit einem Stream und gibt das deserialisierte Objekt zurück. |
| ReadObject(XmlDictionaryReader, Boolean) |
Liest den XML-Datenstrom oder das Dokument mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück. Außerdem können Sie angeben, ob der Serialisierer die Daten vor dem Lesen lesen kann. |
| ReadObject(XmlDictionaryReader) |
Liest das XML-Dokument oder den Datenstrom mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück. |
| ReadObject(XmlReader, Boolean) |
Liest das XML-Dokument oder den Datenstrom mit einem XmlReader und gibt das deserialisierte Objekt zurück. Außerdem können Sie angeben, ob der Serialisierer die Daten vor dem Lesen lesen kann. |
| ReadObject(XmlReader) |
Liest das XML-Dokument oder den Datenstrom mit einem XmlReader und gibt das deserialisierte Objekt zurück. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
| WriteEndObject(XmlDictionaryWriter) |
Schreibt das Ende der Objektdaten als schließende XML-Element in das XML-Dokument oder -Stream mit einem XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Schreibt das Ende der Objektdaten als schließende XML-Element in das XML-Dokument oder -Stream mit einem XmlWriter. |
| WriteObject(Stream, Object) |
Schreibt den vollständigen Inhalt (Start, Inhalt und Ende) des Objekts in das XML-Dokument oder den Datenstrom mit dem angegebenen Stream. |
| WriteObject(XmlDictionaryWriter, Object) |
Schreibt den vollständigen Inhalt (Start, Inhalt und Ende) des Objekts in das XML-Dokument oder den Datenstrom mit dem angegebenen XmlDictionaryWriter. |
| WriteObject(XmlWriter, Object) |
Schreibt den vollständigen Inhalt (Start, Inhalt und Ende) des Objekts in das XML-Dokument oder den Datenstrom mit dem angegebenen XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Schreibt nur den Inhalt des Objekts in das XML-Dokument oder den Datenstrom mithilfe des angegebenen XmlDictionaryWriter. |
| WriteObjectContent(XmlWriter, Object) |
Schreibt nur den Inhalt des Objekts in das XML-Dokument oder den Datenstrom mit dem angegebenen XmlWriter. |
| WriteStartObject(XmlDictionaryWriter, Object) |
Schreibt den Anfang der Objektdaten als öffnende XML-Element mithilfe des angegebenen XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Schreibt den Anfang der Objektdaten als öffnende XML-Element mithilfe des angegebenen XmlWriter. |