Delen via


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:

  1. Maak in Visual C# een nieuw consoletoepassingsproject.

  2. Selecteer Klasse toevoegen in het menu Project om een nieuwe klasse aan het project toe te voegen.

  3. Wijzig in het dialoogvenster Nieuw item toevoegen de naam van de klasse in clsPerson.

  4. Selecteer Toevoegen. Er wordt een nieuwe klasse gemaakt.

  5. Voeg de volgende code toe na de openbare klasse-instructie clsPerson .

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Schakel over naar het codevenster voor Program.cs in Visual Studio.

  7. Declareer en maak in de void Main methode een exemplaar van de clsPerson klasse:

    clsPerson p = new clsPerson();
    
  8. Stel de eigenschappen van het clsPerson object in:

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. De Xml.Serialization naamruimte bevat een XmlSerializer klasse waarmee een object naar XML wordt geserialiseerd. Wanneer u een exemplaar van XmlSerializermaakt, 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());
    
  10. De Serialize methode wordt gebruikt om een object te serialiseren naar XML. Serialiseren is overbelast en kan uitvoer verzenden naar een TextWriter, Streamof XMLWriter 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.