Arbeiten mit .NET: Zugriff auf Dateien/ Xml-Dateien/ Überblick
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>