我正在努力解析Google Feed。我对普通的RSS没有任何问题,但这个稍微复杂的基于ATOM的feed对我来说并不适合使用相同的简单解析代码。 我怎样才能进入elelemts?
我正在使用的以下代码不起作用,它不返回任何集合,但可以正常使用RSS获取< item>大概是因为他们没有属性。
XElement _xml = XElement.Parse(response);
foreach (XElement value in _xml.Elements("entry"))
{
...
}
如果他们有gd:etag =“...”?
,我怎么才能到达条目元素任何帮助表示感谢。
---------------饲料样本----------------------
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"
xmlns:docs="http://schemas.google.com/docs/2007" xmlns:batch="http://schemas.google.com/gdata/batch"
xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/"DUMFR3YyfCt7ImA9WxNTFU0."">
<id>https://docs.google.com/feeds/default/private/full</id>
<updated>2009-08-17T11:10:16.894Z</updated>
<title>Available Documents - user@gmail.com</title>
<openSearch:startIndex>1</openSearch:startIndex>
<entry gd:etag="'EVJVTBICRit7ImBq'">
<id>https://docs.google.com/feeds/id/document%3A12345</id>
<published>2009-07-22T19:02:57.616Z</published>
<updated>2009-07-29T20:31:39.804Z</updated>
</entry>
<entry gd:etag="'HhJSFgpeRyt7ImBq'">
<id>https://docs.google.com/feeds/id/pdf%3A12345</id>
<published>2009-04-09T18:23:09.035Z</published>
<updated>2009-04-09T18:23:09.035Z</updated>
</entry>
...
</feed>
答案 0 :(得分:1)
你应该使用Linq。将xml加载到XDocument对象中,然后针对具有gd:etag =“”的条目运行Linq查询。
XDocument feedXml = XDocument.Load(uriToFeed);
var feedInfo = from item in publicationsXml.Descendants("feed")
select new Feed // this can be a class that has the properties
// from each feed that you care about
{
// code to retreive info you need from the item
ID = item.Element("id").Value,
//etc.
};