XML
XML (eXtensible Markup Language) jest językiem znaczników, który służy do przechowywania i przekazywania danych w formie tekstowej. C# posiada bogate biblioteki do pracy z XML, takie jak System.Xml oraz Linq to Xml, co pozwala na łatwe parsowanie, tworzenie i edycję plików XML.
Poniżej znajduje się przykład użycia C# do tworzenia elementów i atrybutów w pliku XML:
using System;
using System.Xml;
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
XmlElement root = xmlDoc.CreateElement("root"); // tworzymy element "root"
xmlDoc.AppendChild(root); // dodajemy element "root" jako główny element dokumentu
XmlElement osoba = xmlDoc.CreateElement("osoba"); // tworzymy element "osoba"
XmlAttribute imie = xmlDoc.CreateAttribute("imie"); // tworzymy atrybut "imie"
imie.Value = "Piotr"; // ustawiamy wartość atrybutu
osoba.Attributes.Append(imie); // dodajemy atrybut do elementu "osoba"
XmlAttribute nazwisko = xmlDoc.CreateAttribute("nazwisko"); // tworzymy atrybut "nazwisko"
nazwisko.Value = "Kowalski"; // ustawiamy wartość atrybutu
osoba.Attributes.Append(nazwisko); // dodajemy atrybut do elementu "osoba"
XmlAttribute wiek = xmlDoc.CreateAttribute("wiek"); // tworzymy atrybut "wiek"
wiek.Value = "24"; // ustawiamy wartość atrybutu
osoba.Attributes.Append(wiek); // dodajemy atrybut do elementu "osoba"
root.AppendChild(osoba); // dodajemy element "person" jako dziecko elementu "root"
xmlDoc.Save("data.xml"); // zapisujemy dokument do pliku */
}
}
<root>
<osoba imie="Piotr" nazwisko="Kowalski" wiek="24" />
</root>
W powyższym przykładzie tworzymy element "root" oraz element "osoba", a następnie tworzymy atrybuty "imie", "nazwisko" i "wiek" i ustawiamy ich wartości. Następnie dodajemy atrybuty do elementu "osoba" oraz element "osoba" jako dziecko elementu "root". Na końcu zapisujemy cały dokument do pliku "data.xml".
Poniżej znajduje się przykład użycia C# do odczytu danych z pliku XML:
using System;
using System.Xml;
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("data.xml"); // Ładujemy plik XML, który został utworzony w przykładzie wcześniej
XmlNodeList elemList = xmlDoc.GetElementsByTagName("osoba"); // Pobieramy listę elementów "osoba"
for (int i = 0; i < elemList.Count; i++)
{
Console.WriteLine("Imie: " + elemList[i].Attributes["imie"].Value); // Wyświetlamy wartość atrybutu "imie"
Console.WriteLine("Nazwisko: " + elemList[i].Attributes["nazwisko"].Value); // Wyświetlamy wartość atrybutu "nazwisko"
Console.WriteLine("Wiek: " + elemList[i].Attributes["wiek"].Value); // Wyświetlamy wartość atrybutu "wiek"
}
}
}
Imie: Piotr
Nazwisko: Kowalski
Wiek: 24
W powyższym przykładzie używamy klasy XmlDocument do załadowania pliku XML o nazwie "data.xml" , następnie pobieramy listę elementów "person" i iterujemy przez każdy z nich. Dla każdego elementu "person" wyświetlamy wartości atrybutów "firstname", "lastname" i "age" na konsoli.
Poniżej znajduje się przykład użycia C# do edycji pliku XML:
using System;
using System.Xml;
class Program
{
static void Main(string[] args)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("data.xml"); // Ładujemy plik XML
XmlNodeList elemList = xmlDoc.GetElementsByTagName("osoba"); // Pobieramy listę elementów "osoba"
for (int i = 0; i < elemList.Count; i++)
{
if (elemList[i].Attributes["imie"].Value == "Piotr")
{
elemList[i].Attributes["wiek"].Value = "37"; // Zmieniamy wartość atrybutu "wiek"
}
}
xmlDoc.Save("data.xml"); // Zapisujemy dokument do pliku
}
}
Imie: Piotr
Nazwisko: Kowalski
Wiek: 37
W powyższym przykładzie używamy klasy XmlDocument do załadowania pliku XML o nazwie "data.xml" , następnie pobieramy listę elementów "person" i iterujemy przez każdy z nich. Dla każdego elementu "person" wyświetlamy wartości atrybutów "firstname", "lastname" i "age" na konsoli.
Należy pamiętać, że takie podejście nie jest najlepszym wyborem, jeśli chodzi o modyfikację dużych plików XML, ponieważ trzeba przeczytać cały plik do pamięci, zmodyfikować i zapisać z powrotem. Lepiej jest skorzystać z LINQ to XML, który pozwala na selekcję, modyfikację i zapis tylko części pliku.