Programmierkurs C-Sharp: XML
Aus Wikibooks
Für XML gibt es in C# auch eine eigene Klasse, im Folgenden wird nur ein sehr kleiner Teil in deren Funktionsvielfalt beleuchtet:
using System; using System.Xml; namespace xml_test { class Program { public static void Main(string[] args) { XmlDocument xml = new XmlDocument(); //Erstellen eines neuen Objektes der XML-Klasse xml.Load("test.xml"); //Laden einer XML-Datei Console.WriteLine(xml.SelectNodes("test/erste")[0].Attributes["att"].Value); //Wähle den Tag "erste", erstes Vorkommen (Index: 0), Attribut "att" //Ausgabe: "Attribut" Console.WriteLine(xml.SelectNodes("test/erste/zweite")[1].InnerText); //Mit "InnerText" geben wir den Text zwischen den Tags aus. //Ausgabe: "Hallo" Console.WriteLine(xml.SelectNodes("test/erste")[1].SelectNodes("zweite")[0].InnerText); //Man kann auch erstmal einen Knoten wählen, den Index angeben und dann einen weiteren wählen. //Ausgabe: "Welt!" Console.WriteLine(xml.SelectNodes("test/erste")[0].InnerXml); //Mit InnerXml geben wir den gesamten Inhalt zwischen den Tags aus. //Ausgabe: "<zweite leer="Leeres Element"/><zweite>Hallo</zweite>" //Jetzt ändern wir etwas: xml.SelectNodes("test/erste/zweite")[0].Attributes["leer"].Value = "Volles Element :)"; //Man kann Value, genauso wie InnerText, InnerXml,... einfach ändern. Console.WriteLine(xml.SelectNodes("test/erste/zweite")[0].OuterXml); //Mit OuterXml kann man den gesamten Tag ausgeben. //Ausgabe: "<zweite leer="Volles Element :)"/>" xml.SelectNodes("test/erste/zweite")[0].InnerText = "Jetzt muss schnell was da rein, damit es stimmt!"; //Leeren Elementen kann man auch so Text zuweisen. xml.Save("test2.xml"); //Jetzt noch (in unserem Fall unter anderem Namen) speichern, damit die Änderungen //wirksam werden. Es müsste jetzt eine test2.xml mit den oben beschriebenen Änderungen //erstellt worden sein. Console.ReadLine(); } } }
Inhalt der test.xml:
<?xml version="1.0" encoding="utf-8"?> <test> <erste att="Attribut"> <zweite leer="Leeres Element"/> <zweite>Hallo</zweite> </erste> <erste> <zweite>Welt!</zweite> </erste> </test>
Inhalt der test2.xml nach der Ausführung:
<?xml version="1.0" encoding="utf-8"?> <test> <erste att="Attribut"> <zweite leer="Volles Element :)">Jetzt muss schnell was da rein, damit es stimmt!</zweite> <zweite>Hallo</zweite> </erste> <erste> <zweite>Welt!</zweite> </erste> </test>