XmlObjectSerializer Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Tillhandahåller basklassen som används för att serialisera objekt som XML-strömmar eller dokument. Den här klassen är abstrakt.
public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
- Arv
-
XmlObjectSerializer
- Härledda
Exempel
I följande exempel visas en metod med namnet WriteObjectWithInstance som innehåller en XmlObjectSerializer som en parameter. Metoden serialiserar ett objekt med hjälp av antingen DataContractSerializer eller NetDataContractSerializer genom att anropa WriteObject metoden.
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
Kommentarer
XmlObjectSerializer Utöka för att skapa en egen serialiserare för att serialisera och deserialisera objekt. DataContractSerializer Både klassen och NetDataContractSerializer klassen ärver från XmlObjectSerializer och används för att serialisera och deserialisera objekt som överensstämmer med datakontraktsregler (objekt som skapats med och DataContractAttributeDataMemberAttribute).
Anteckningar till implementerare
När du ärver från XmlObjectSerializermåste du åsidosätta följande medlemmar: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Dessutom IsStartObject måste metoderna och ReadObject implementeras för läsning och deserialisering.
Konstruktorer
| Name | Description |
|---|---|
| XmlObjectSerializer() |
Initierar en ny instans av XmlObjectSerializer klassen. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| IsStartObject(XmlDictionaryReader) |
Hämtar ett värde som anger om XmlDictionaryReader är placerat över ett XML-element som kan läsas. |
| IsStartObject(XmlReader) |
Hämtar ett värde som anger om XmlReader är placerat över ett XML-element som kan läsas. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ReadObject(Stream) |
Läser XML-dataströmmen eller dokumentet med ett Stream och returnerar det deserialiserade objektet. |
| ReadObject(XmlDictionaryReader, Boolean) |
Läser XML-dataströmmen eller dokumentet med ett XmlDictionaryReader och returnerar det deserialiserade objektet. Du kan också ange om serialiseraren kan läsa data innan du försöker läsa dem. |
| ReadObject(XmlDictionaryReader) |
Läser XML-dokumentet eller dataströmmen med ett XmlDictionaryReader och returnerar det deserialiserade objektet. |
| ReadObject(XmlReader, Boolean) |
Läser XML-dokumentet eller dataströmmen med ett XmlReader och returnerar det deserialiserade objektet. Du kan också ange om serialiseraren kan läsa data innan du försöker läsa dem. |
| ReadObject(XmlReader) |
Läser XML-dokumentet eller dataströmmen med ett XmlReader och returnerar det deserialiserade objektet. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| WriteEndObject(XmlDictionaryWriter) |
Skriver slutet av objektdata som ett avslutande XML-element till XML-dokumentet eller dataströmmen med en XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Skriver slutet av objektdata som ett avslutande XML-element till XML-dokumentet eller dataströmmen med en XmlWriter. |
| WriteObject(Stream, Object) |
Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet Stream. |
| WriteObject(XmlDictionaryWriter, Object) |
Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet XmlDictionaryWriter. |
| WriteObject(XmlWriter, Object) |
Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Skriver endast innehållet i objektet till XML-dokumentet eller dataströmmen med den angivna XmlDictionaryWriter. |
| WriteObjectContent(XmlWriter, Object) |
Skriver endast innehållet i objektet till XML-dokumentet eller dataströmmen med angivet XmlWriter. |
| WriteStartObject(XmlDictionaryWriter, Object) |
Skriver början av objektets data som ett inledande XML-element med den angivna XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Skriver början av objektets data som ett inledande XML-element med den angivna XmlWriter. |
Gäller för
Se även
- DataContractSerializer
- NetDataContractSerializer
- Använda datakontrakt
- Serialiserare för datakontrakt