Školenie
Modul
Get started with classes and objects in C# - Training
Learn how to create classes and instantiate objects that expose encapsulated field data by using class definitions, constructors, and the 'new' operator.
Tento prehliadač už nie je podporovaný.
Inovujte na Microsoft Edge a využívajte najnovšie funkcie, aktualizácie zabezpečenia a technickú podporu.
This article provides a method about how to serialize an object to Extensible Markup Language (XML) by using Visual C#.
Original product version: Visual Studio
Original KB number: 815813
The method described in this article is useful for persisting the state of an object. The method is also useful for cloning an object by de-serializing the XML back to a new object.
This article refers to the following Microsoft .NET Framework Class Library namespaces:
System.Xml
System.Xml.Serialization
This article assumes that you're familiar with the following topics:
Serialization is the process of taking the state of an object and persisting it in some fashion. The .NET Framework includes powerful objects that can serialize any object to XML. The System.Xml.Serialization
namespace provides this capability.
Follow these steps to create a console application that creates an object, and then serializes its state to XML:
In Visual C#, create a new Console Application project.
On the Project menu, select Add Class to add a new class to the project.
In the Add New Item dialog box, change the name of the class to clsPerson.
Select Add. A new class is created.
Add the following code after the public class clsPerson
statement.
public string FirstName;
public string MI;
public string LastName;
Switch to the code window for Program.cs in Visual Studio.
In the void Main
method, declare and create an instance of the clsPerson
class:
clsPerson p = new clsPerson();
Set the properties of the clsPerson
object:
p.FirstName = "Jeff";
p.MI = "A";
p.LastName = "Price";
The Xml.Serialization
namespace contains an XmlSerializer
class that serializes an object to XML. When you create an instance of XmlSerializer
, you pass the type of the class that you want to serialize into its constructor:
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
The Serialize
method is used to serialize an object to XML. Serialize is overloaded and can send output to a TextWriter
, Stream
, or XMLWriter
object. In this example, you send the output to the console:
x.Serialize(Console.Out,p);
Console.WriteLine();
Console.ReadLine();
using System;
public class clsPerson
{
public string FirstName;
public string MI;
public string LastName;
}
class class1
{
static void Main(string[] args)
{
clsPerson p=new clsPerson();
p.FirstName = "Jeff";
p.MI = "A";
p.LastName = "Price";
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
x.Serialize(Console.Out, p);
Console.WriteLine();
Console.ReadLine();
}
}
To verify that your project works, press CTRL+F5 to run the project. A clsPerson
object is created and populated with the values that you entered. This state is serialized to XML. The console window shows the following code:
<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>Jeff</FirstName>
<MI>A</MI>
<LastName>Price</LastName>
</clsPerson>
The Xml.Serialization.XmlSerializer
object performs only shallow serialization. If you also want to serialize the private variables of an object or child objects, you must use deep serialization.
Školenie
Modul
Get started with classes and objects in C# - Training
Learn how to create classes and instantiate objects that expose encapsulated field data by using class definitions, constructors, and the 'new' operator.
Dokumentácia
Examples of XML Serialization - .NET
These code examples show advanced scenarios, including how to use XML serialization to generate an XML stream that conforms to an XML Schema document.
Controlling XML Serialization Using Attributes - .NET
Attributes can be used to control the XML serialization of an object or to create an alternate XML stream from the same set of classes.