Visual C# gebruiken om een object te serialiseren naar XML
Dit artikel bevat een methode voor het serialiseren van een object naar XML (Extensible Markup Language) met behulp van Visual C#.
Oorspronkelijke productversie: Visual Studio
Oorspronkelijk KB-nummer: 815813
Samenvatting
De methode die in dit artikel wordt beschreven, is handig voor het behouden van de status van een object. De methode is ook handig voor het klonen van een object door de XML weer te serialiseren naar een nieuw object.
Dit artikel verwijst naar de volgende Microsoft .NET Framework Class Library-naamruimten:
System.Xml
System.Xml.Serialization
Behoeften
In dit artikel wordt ervan uitgegaan dat u bekend bent met de volgende onderwerpen:
- Visual Studio
- Algemene bekendheid met XML
- Algemene bekendheid met Visual C#
XML-serialisatie
Serialisatie is het proces van het nemen van de status van een object en het op een bepaalde manier persistent maken. Het .NET Framework bevat krachtige objecten waarmee elk object naar XML kan worden geserialiseerd. De System.Xml.Serialization
naamruimte biedt deze mogelijkheid.
Volg deze stappen om een consoletoepassing te maken waarmee een object wordt gemaakt en vervolgens de status ervan te serialiseren naar XML:
Maak in Visual C# een nieuw consoletoepassingsproject.
Selecteer Klasse toevoegen in het menu Project om een nieuwe klasse aan het project toe te voegen.
Wijzig in het dialoogvenster Nieuw item toevoegen de naam van de klasse in clsPerson.
Selecteer Toevoegen. Er wordt een nieuwe klasse gemaakt.
Voeg de volgende code toe na de openbare klasse-instructie
clsPerson
.public string FirstName; public string MI; public string LastName;
Schakel over naar het codevenster voor Program.cs in Visual Studio.
Declareer en maak in de
void Main
methode een exemplaar van declsPerson
klasse:clsPerson p = new clsPerson();
Stel de eigenschappen van het
clsPerson
object in:p.FirstName = "Jeff"; p.MI = "A"; p.LastName = "Price";
De
Xml.Serialization
naamruimte bevat eenXmlSerializer
klasse waarmee een object naar XML wordt geserialiseerd. Wanneer u een exemplaar vanXmlSerializer
maakt, geeft u het type van de klasse door dat u wilt serialiseren in de constructor:System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
De
Serialize
methode wordt gebruikt om een object te serialiseren naar XML. Serialiseren is overbelast en kan uitvoer verzenden naar eenTextWriter
,Stream
ofXMLWriter
object. In dit voorbeeld verzendt u de uitvoer naar de console:x.Serialize(Console.Out,p); Console.WriteLine(); Console.ReadLine();
Volledige codevermelding
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();
}
}
Verificatie
Als u wilt controleren of uw project werkt, drukt u op Ctrl+F5 om het project uit te voeren. Er wordt een clsPerson
object gemaakt en ingevuld met de waarden die u hebt ingevoerd. Deze status wordt geserialiseerd naar XML. In het consolevenster ziet u de volgende 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>
Problemen oplossen
Het Xml.Serialization.XmlSerializer
object voert alleen ondiepe serialisatie uit. Als u ook de privévariabelen van een object of onderliggende objecten wilt serialiseren, moet u diepe serialisatie gebruiken.