XML-Datei einlesen
[ → ]
Über die Klasse XDocument lässt sich eine XML-Datei mit wenig Aufwand einlesen (LINQ to XML).
Beispiel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace ReadXMLDoc
{
class Program
{
static void Main(string[] args)
{
XDocument xml = XDocument.Load(@"C:\Temp\setting.xml");
var xmlQuery = from item in xml.Descendants("settings")
select item;
foreach (XElement items in xmlQuery)
{
Console.WriteLine(items.Element("Datum").Value);
Console.WriteLine(items.Element("Wert1").Value);
Console.WriteLine(items.Element("Wert2").Value);
Console.WriteLine(items.Element("Wert3").Value);
Console.WriteLine(items.Element("Wert4").Value);
}
Console.ReadLine();
}
}
}
setting.xml
<settings>
<Datum>9 Januar</Datum>
<Wert1>eins</Wert1>
<Wert2>zwei</Wert2>
<Wert3>drei</Wert3>
<Wert4>vier</Wert4>
</settings>
Alternativ kann ein XML-Stream verarbeitet werden (z.B. aus einem Webservice)
Es werden die Knoten des XML-Streams durchlaufen und über switch/case einzelne Textelemente gelesen.
Beispiel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Xml;
namespace WbsRequest
{
var stream = t.Result;
using (var reader = new StreamReader(stream))
{
ename = "";
outList = "";
XmlTextReader xmlreader = null;
xmlreader = new XmlTextReader(stream);
i=0;
while (xmlreader.Read())
{
switch (xmlreader.NodeType)
{
case XmlNodeType.Element: // Der Knoten ist ein Element.
ename=xmlreader.Name;
break;
case XmlNodeType.Text: //Anzeige des Textes in jedem der Elemente.
if (ename == "postalcode")
{
i = i + 1;
outList += xmlreader.Value + "?";
Orte[i] = xmlreader.Value;
}
if (ename == "name")
{
outList += xmlreader.Value + "|"; //letztes Element
Orte[i] = xmlreader.Value;
}
break;
case XmlNodeType.EndElement: //Ende der Elementanzeige.
Console.Write("</" + xmlreader.Name+">");
break;
}
}
}
Console.ReadLine();
}