我有以下XML:
<Root>
<EventSet>
<Event>
<id>
//random id
</id>
<time>
<localTime>
//random local time
</localtime>
<utcTime>
//corresponding UTC time
</utcTime>
</time>
</Event>
</EventSet>
</Root>
给定一个XDocument
(在本例中称为xDoc
),我可以通过:var root = xDoc.Root;
获取根
我尝试var events = xDoc.Descendants("EventSet").Descendants("Event");
查询EventSet
中的所有事件,但它返回了null
。我很确定这不对。
如何查询事件,然后迭代以获得每个事件的id
、localTime
和utcTime
发布于 2012-06-21 21:22:44
我不能重复你的问题。在修复了XML以便标记匹配之后,这样做是可行的:
using System;
using System.Linq;
using System.Xml.Linq;
class Program
{
public static void Main()
{
var doc = XDocument.Load("Test.xml");
var query = doc.Descendants("EventSet")
.Descendants("Event");
Console.WriteLine(query.Count()); // 1
}
}
或者是为了得到这些信息:
foreach (var element in query)
{
string id = (string) element.Element("id");
string localTime = (string) element.Element("time").Element("localTime");
string utcTime = (string) element.Element("time").Element("utcTime");
...
}
您可以转换为DateTime
而不是string
--这取决于元素中的格式。
发布于 2012-06-21 21:27:14
您可以简单地执行像这样的查询。
var events = from e in xDoc.Root.Desendants("Event") select new {
id = e.Element("id").Value
Time = e.Element("time").Element("localTime").Value ////or you can cast it into datetime
UtcTime = e.Elelemt("time").Element("utcTime").Value //or you can cast it into datetime
}
https://stackoverflow.com/questions/11146848
复制相似问题