MC, 2025
Ilustracja do artykułu: C# XML Serialization - Jak to działa? Przykłady użycia

C# XML Serialization - Jak to działa? Przykłady użycia

W świecie programowania, jednym z najważniejszych aspektów jest efektywne przechowywanie i przesyłanie danych. W języku C# jednym z najpopularniejszych sposobów serializacji danych jest XML Serialization. Jeśli nie masz jeszcze doświadczenia z tym tematem, nie martw się – w tym artykule dokładnie wyjaśnię, czym jest C# XML Serialization, jak działa oraz pokażę kilka praktycznych przykładów. W końcu to umiejętność, którą warto poznać, zwłaszcza, że XML jest jednym z najczęściej używanych formatów do przechowywania danych.

1. Czym jest XML Serialization w C#?

XML Serialization w C# to proces, który pozwala na przekształcenie obiektów w format XML. Dzięki temu, dane przechowywane w obiektach mogą być zapisane do plików, bądź przesyłane w sieci w formacie, który jest łatwy do odczytania i przetwarzania przez inne systemy. W skrócie, chodzi o konwersję danych obiektów do formatu tekstowego (XML), który może być zapisywany w pliku lub przekazywany pomiędzy różnymi aplikacjami.

Proces odwrotny, czyli przekształcenie danych zapisanych w pliku XML z powrotem do obiektu w pamięci, nazywamy deserializacją. Dzięki C# XML Serialization i deserializacji, możemy przechowywać stan obiektów i przywracać go w dowolnym momencie, co czyni tę metodę bardzo przydatną w różnych aplikacjach, w tym w systemach bazodanowych, aplikacjach internetowych, czy podczas wymiany danych między systemami.

2. Jak działa XML Serialization w C#?

Aby serializować obiekt do formatu XML w C#, używamy klasy XmlSerializer, która znajduje się w przestrzeni nazw System.Xml.Serialization. Działanie serializacji polega na tym, że obiekt wypełniający określoną klasę (lub strukturę) zostaje "rozbity" na komponenty w formie tekstowej, przy czym każdy z tych komponentów jest zapisany jako element XML. To sprawia, że obiekt staje się bardziej "uniwersalny" i łatwiejszy do przenoszenia między różnymi aplikacjami lub systemami.

Proces ten wymaga, aby klasa, której obiekt ma być serializowany, była odpowiednio oznaczona atrybutem [Serializable], co pozwala na automatyczną konwersję tego obiektu na format XML. Jeśli klasa zawiera właściwości, które nie chcemy serializować, możemy oznaczyć je atrybutem [NonSerialized].

3. Przykład serializacji obiektu do XML

Chcesz zobaczyć jak to działa w praktyce? Oto prosty przykład serializacji obiektu do formatu XML w C#.

using System;
using System.IO;
using System.Xml.Serialization;

public class Osoba
{
    public string Imie { get; set; }
    public string Nazwisko { get; set; }
    public int Wiek { get; set; }
}

class Program
{
    static void Main()
    {
        Osoba osoba = new Osoba { Imie = "Jan", Nazwisko = "Kowalski", Wiek = 30 };
        
        XmlSerializer serializer = new XmlSerializer(typeof(Osoba));
        
        using (StringWriter writer = new StringWriter())
        {
            serializer.Serialize(writer, osoba);
            Console.WriteLine(writer.ToString());
        }
    }
}

W powyższym przykładzie tworzony jest obiekt klasy Osoba, który następnie jest serializowany do formatu XML. Wynikiem tego będzie ciąg tekstowy zawierający XML, który może wyglądać np. tak:



  Jan
  Kowalski
  30

Jak widzisz, obiekt Osoba został zapisany w strukturze XML, gdzie każde pole obiektu zostało zapisane jako element XML.

4. Deserializacja – konwersja XML do obiektu

Teraz czas na odwrócenie procesu, czyli deserializację. Deserializacja to proces, w którym XML jest konwertowany z powrotem do obiektu w pamięci. Przykład deserializacji jest również bardzo prosty i używa klasy XmlSerializer.

using System;
using System.IO;
using System.Xml.Serialization;

public class Osoba
{
    public string Imie { get; set; }
    public string Nazwisko { get; set; }
    public int Wiek { get; set; }
}

class Program
{
    static void Main()
    {
        string xmlData = @"
                            
                                Jan
                                Kowalski
                                30
                            ";
        
        XmlSerializer serializer = new XmlSerializer(typeof(Osoba));
        
        using (StringReader reader = new StringReader(xmlData))
        {
            Osoba osoba = (Osoba)serializer.Deserialize(reader);
            Console.WriteLine($"Imię: {osoba.Imie}, Nazwisko: {osoba.Nazwisko}, Wiek: {osoba.Wiek}");
        }
    }
}

W tym przypadku serializujemy łańcuch XML z powrotem do obiektu klasy Osoba. Po deserializacji możemy korzystać z obiektu w taki sam sposób, jak przed serializacją. W wyniku tego programu na konsoli pojawi się:

Imię: Jan, Nazwisko: Kowalski, Wiek: 30

5. Zaawansowane możliwości XML Serialization

Oprócz podstawowych przykładów, XML Serialization w C# oferuje również kilka zaawansowanych funkcji, które umożliwiają dostosowanie serializacji do naszych potrzeb:

  • Personalizowanie nazw tagów XML: Za pomocą atrybutu [XmlElement] lub [XmlAttribute] możemy zmienić nazwy tagów w wynikowym XML.
  • Wykorzystanie atrybutu [XmlIgnore]: Pozwala on na zignorowanie konkretnych właściwości podczas serializacji, np. wtedy, gdy nie chcemy, aby jakaś właściwość była zapisywana do pliku XML.
  • Serializacja kolekcji: Możemy serializować listy, tablice czy inne kolekcje obiektów, co jest szczególnie przydatne, gdy chcemy przechować wiele obiektów tego samego typu.

6. Podsumowanie

XML Serialization to potężne narzędzie, które pozwala na łatwą konwersję obiektów w C# do formatu XML i odwrotnie. Dzięki niemu możemy w prosty sposób przechowywać dane w zewnętrznych plikach, przesyłać je między aplikacjami lub przechowywać w bazach danych. Zrozumienie, jak działa serializacja i deserializacja, pozwala na efektywne zarządzanie danymi w nowoczesnych aplikacjach.

Warto eksperymentować z tymi narzędziami, dostosowywać je do własnych potrzeb i wykorzystać w praktyce, bo XML Serialization w C# to fundament wielu systemów informacyjnych.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: