Strona główna » Kursy » Kurs C# » Zapisywanie Dokumentów XML
XML
 

Zapisywanie Dokumentów XML

Cel

Dokumenty XML to obecnie jedna z typowych form zapisywania danych w każdym rodzaju aplikacji. W tym artykule zostaną przedstawione narzędzia języka C#, które służą do zapisywania danych w plikach XML.

Implementacja

Założenia

Do zapisania w pliku XML jest lista par kluczy nazwa typu × rozmiary typu jako elementy typu type wewnątrz elementu types tak jak zostało to przedstawione poniżej.

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <types>
  3.   <type size="8">byte</type>
  4.   <type size="16">short</type>
  5.   <type size="32">int</type>
  6.   <type size="64">long</type>
  7. </types>

Zapisywanie Pliku

Utworzenie nowego dokumentu rozpoczynamy od zadeklarowania nowego wystąpienia elementu klasy XmlDocument, a następnie zapisujemy w pliku deklarację. Powinna ona jako minimum zawierać wersję dokumentu oraz typ kodowania znaków. Pozwoli to innym edytorom XML poprawnie odczytać i modyfikować ten dokument. Dodatkowo należy pamiętać, że deklaracja musi być na samym początku pliku!

  1. XmlDocument dokument = new XmlDocument();
  2. XmlDeclaration xmlDeclaration = dokument.CreateXmlDeclaration("1.0", "UTF-8", null);
  3. dokument.AppendChild(xmlDeclaration);

Kolejny etap tworzenia dokumentu polega na utworzeniu tzw. korzenia dokumentu. Będzie to główny element, który będzie zawierał całą zawartość dokumentu. Wewnątrz pliku powinien być tylko jeden taki element, a więc na pierwszej warstwi dokumentu jest tylko deklaracja i główny element. W tym przypadku główny element to tag types.

  1. XmlElement elTypy = dokument.CreateElement(string.Empty, "types", string.Empty);
  2. dokument.AppendChild(elTypy);

Podczas tworzenie podawany jest jedynie tag bez prefix czy namespaceURI. Wynika to z faktu, że dla prostego dokumentu nie jest to wymagane. Jednak należy pamiętać, że taka możliwość istnieje. Element jest natychmiast dopisywany do dokumentu, ale możnaby to zrobić również przed samym zapisem (tj. modyfikować niedołączony i dopiero dołączyć do dokumentu).

Jak wcześniej było zaznaczone dane do zapisu są przechowywane jako słownik, a więc używamy pętli foreach, aby zapisać wszystkie elementy. Dodanie elementu polega na utworzeniu nowego elementu i nadanie mu odpowiedniego atrybutu (tutaj size). Natomiast dodanie wartości tekstowej wymaga utworzenie jeszcze jednego elementu. Tym razem jest on klasy XmlText. W konstruktorze wymaga podania wartości tekstowej do wyświetlenia. Taki element należy umieścić wewnątrz elementu type. Na sam koniec taki element zostaje dołączony do korzenia dokumentu.

  1. foreach (KeyValuePair<string, int> typ in typy)
  2. {
  3. XmlElement elTyp = dokument.CreateElement(string.Empty, "type", string.Empty);
  4. elTyp.SetAttribute("size", typ.Value.ToString());
  5. XmlText elWartosc = dokument.CreateTextNode(typ.Key);
  6. elTyp.AppendChild(elWartosc);
  7. elTypy.AppendChild(elTyp);
  8. }

Na sam koniec pozostaje zapisanie dokumentu. Najprostszy sposób polega na podaniu ścieżki, ale można też np. do otworzonego strumienia.

  1. dokument.Save("dokument.xml");

Teraz pozostaje wejść do podanej w zapisie ścieżki lokalizacji i sprawdzić czy podany dokumeny został zapisany prawidłowo. Jak odczytywać dokumentu XML można przeczytać tutaj.

Zadania
Zadanie 1
Kod źródłowy Zadanie 1Kod źródłowy Zadanie 1