MICROSOFT: Vista SP1 jetzt downloadbar
Für alle MSDN-Abonnenten ist das SP1 für Vista jetzt herunterlad- und installierbar. Hier.
War ich jetzt Erster?
Für alle MSDN-Abonnenten ist das SP1 für Vista jetzt herunterlad- und installierbar. Hier.
War ich jetzt Erster?
Das Laden von XML-Dokumenten per LINQ to XML fühlt sich etwas anders an, als man dies bisher gemacht hat. Hier mal ein Beispiel, bei dem die Inhalte aller title-Knoten eines Dokuments ermittelt werden sollen.
Folgendes XML-Dokument soll verarbeitet werden (in natura gehört natürlich noch mehr dazu, aber es ist ja nur ein Beispiel):
< ?xml version="1.0"?>
Zuerst die klassische Vorgehensweise per XmlReader:
// XmlTextReader erzeugen
XmlReader rd = XmlReader.Create(Server.MapPath(“~/data.xml”));
// Liste der Titel
List
// Lesen
while (rd.Read())
{
// Muss ein Element-Knoten sein und der Name des
// Knotens muss “title” lauten
if (rd.NodeType == XmlNodeType.Element
&& rd.LocalName == “title”)
{
// Inhalt des Knotens einlesen
titles.Add(rd.ReadString());
}
}
// Aufräumen!
rdr.Close();
So siehts beim XmlDocument aus (ohne XPath, nur DOM):
// Laden der Daten
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath(“~/data.xml”));
// Ermitteln der Daten
List
// cd-Knoten
foreach (XmlElement item in doc.DocumentElement.ChildNodes)
{
// title-Knoten finden
foreach (XmlElement current in item.ChildNodes)
{
if (current.LocalName == “title”)
{
// Inhalt auslesen
titles.Add(current.InnerText);
}
}
}
Und nun das selbe Ergebnis per LINQ to XML:
// Laden der Daten
XDocument doc =
XDocument.Load(Server.MapPath(“~/data.xml”));
// Ermitteln der “title”-Werte
var titles =
from title in doc.Descendants(“title”)
select title.Value;
// Überführen in generische Liste
List
Das wars, mehr ist nicht nötig. Elegant. Von der Performance her dürfte es irgendwo zwischen XmlReader und XmlDocument liegen, wobei ich es noch nicht getestet habe.
Später mehr zu LINQ to XML – ist nämlich ein spannendes Thema!