我想從這個URL解析谷歌日曆事件:http://www.google.com/calendar/feeds/amchamlva%40gmail.com/public/full 這裏是我的代碼:解析XML谷歌日曆事件
static IEnumerable<Event> getEntryQuery(XDocument xdoc)
{
return from entry in xdoc.Root.Elements().Where(i => i.Name.LocalName == "entry")
select new Event
{
EventId = entry.Elements().First(i => i.Name.LocalName == "id").Value,
Published = DateTime.Parse(entry.Elements().First(i => i.Name.LocalName == "published").Value),
Title = entry.Elements().First(i => i.Name.LocalName == "title").Value,
Content = entry.Elements().First(i => i.Name.LocalName == "content").Value,
Where = entry.Elements().First(i => i.Name.LocalName == "gd:where").FirstAttribute.Value,
Link = entry.Elements().First(i => i.Name.LocalName == "link").Attribute("href").Value,
};
}
using (StreamReader httpwebStreamReader = new StreamReader(e.Result))
{
var results = httpwebStreamReader.ReadToEnd();
XDocument doc = XDocument.Parse(results);
System.Diagnostics.Debug.WriteLine(doc);
var myFeed = getEntryQuery(doc);
foreach (var feed in myFeed)
{
System.Diagnostics.Debug.WriteLine(feed.Content);
}
}
和它的工作原理差不多很好,除了這一點:
Where = entry.Elements().First(i => i.Name.LocalName == "gd:where").FirstAttribute.Value,
我有一個例外可能是因爲價值是零,其實我需要得到(在這種情況下,例如「某處」)的valueString attribue值
<gd:where valueString='Somewhere'/>
良好的工作!這是我需要的! :) – JackTurky 2013-02-25 23:46:19