Ich habe eine XML-Datei, die eine Reihe von Elementen, wie die folgenden enthalten:Wie erhalte ich den Wert eines Nachkommenelements?
<trkpt lat="42.403128" lon="-71.084654">
<ele>12.153809</ele>
<time>2002-03-11T20:49:26Z</time>
<sym>Waypoint</sym>
</trkpt>
Ich verwende den folgenden Code, um die lat
und lon
Attribute zu greifen und sie zu einer Liste hinzuzufügen:
XDocument doc = XDocument.Load(filename);
XElement trkseg = doc.Descendants().Where(x => x.Name.LocalName == "trkseg").FirstOrDefault();
XNamespace ns = trkseg.Name.Namespace;
var l_l = trkseg.Elements(ns + "trkpt").Select(x => new
{
lat = x.Attribute("lat").Value,
lon = x.Attribute("lon").Value
}).ToList();
Der obige Code funktioniert wie erwartet. Ich erhalte eine Liste von Strings mit den Werten lat
und lon
. Bis jetzt sind wir gut.
Das Problem tritt auf, wenn ich versuche, den Wert des <time>
Elements zu erhalten. Ich habe mehrere verschiedene Varianten des folgenden versucht, ohne Erfolg:
lat = x.Attribute("lat").Value,
lon = x.Attribute("lon").Value,
time = x.Descendants("time").Elements().FirstOrDefault().Value
Alle meine Versuche resultierten in time
null
zu sein. Wie bekomme ich den Wert des Elements <time>
?
Dank! Ich fügte 'time = x.Element (" time ") hinzu. Wert 'zu meinem Code, aber' time 'ist immer noch' null '. – DenaliHardtail