XmlObjectSerializer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje základní třídu sloužící k serializaci objektů jako datové proudy XML nebo dokumenty. Tato třída je abstraktní.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- Dědičnost
-
XmlObjectSerializer
- Odvozené
Příklady
Následující příklad ukazuje metodu s názvem WriteObjectWithInstance
, která obsahuje XmlObjectSerializer jako parametr . Metoda serializuje objekt pomocí nebo DataContractSerializerNetDataContractSerializer voláním 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
Poznámky
Rozšíření k XmlObjectSerializer vytvoření vlastní serializátor serializace a deserializace objektů. DataContractSerializer Třída i NetDataContractSerializer třída dědí z XmlObjectSerializer a se používají k serializaci a deserializaci objektů, které jsou v souladu s pravidly kontraktu DataMemberAttributedat (objekty vytvořené pomocí DataContractAttribute a ).
Poznámky pro implementátory
Když dědíte z XmlObjectSerializer, musíte přepsat následující členy: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Kromě toho IsStartObject musí být metody a ReadObject implementovány pro čtení a deserializaci.
Konstruktory
XmlObjectSerializer() |
Inicializuje novou instanci XmlObjectSerializer třídy . |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
IsStartObject(XmlDictionaryReader) |
Získá hodnotu, která určuje, zda XmlDictionaryReader je umístěna nad element XML, který lze číst. |
IsStartObject(XmlReader) |
Získá hodnotu, která určuje, zda XmlReader je umístěna nad element XML, který lze číst. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ReadObject(Stream) |
Čte datový proud XML nebo dokument s Stream a vrátí deserializovaný objekt. |
ReadObject(XmlDictionaryReader) |
Čte dokument XML nebo datový proud s XmlDictionaryReader a vrátí deserializovaný objekt. |
ReadObject(XmlDictionaryReader, Boolean) |
Čte datový proud XML nebo dokument s XmlDictionaryReader a vrátí deserializovaný objekt; to také umožňuje určit, zda serializátor může číst data před pokusem o čtení. |
ReadObject(XmlReader) |
Čte dokument XML nebo datový proud s XmlReader a vrátí deserializovaný objekt. |
ReadObject(XmlReader, Boolean) |
Čte dokument XML nebo datový proud s XmlReader a vrátí deserializovaný objekt; to také umožňuje určit, zda serializátor může číst data před pokusem o čtení. |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
WriteEndObject(XmlDictionaryWriter) |
Zapíše konec dat objektu jako uzavírací element XML do dokumentu XML nebo datového XmlDictionaryWriterproudu pomocí . |
WriteEndObject(XmlWriter) |
Zapíše konec dat objektu jako uzavírací element XML do dokumentu XML nebo datového XmlWriterproudu pomocí . |
WriteObject(Stream, Object) |
Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným Streamobjektem . |
WriteObject(XmlDictionaryWriter, Object) |
Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlDictionaryWriterobjektem . |
WriteObject(XmlWriter, Object) |
Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlWriterobjektem . |
WriteObjectContent(XmlDictionaryWriter, Object) |
Zapíše pouze obsah objektu do dokumentu XML nebo datového proudu pomocí zadaného XmlDictionaryWriterobjektu . |
WriteObjectContent(XmlWriter, Object) |
Zapíše pouze obsah objektu do dokumentu XML nebo datového proudu se zadaným XmlWriterobjektem . |
WriteStartObject(XmlDictionaryWriter, Object) |
Zapíše začátek dat objektu jako levý element XML pomocí zadaného XmlDictionaryWriterobjektu . |
WriteStartObject(XmlWriter, Object) |
Zapíše začátek dat objektu jako levý element XML pomocí zadaného XmlWriterobjektu . |