从Feed中提取XML信息?

时间:2010-07-17 15:55:13

标签: xml xpath request

我尝试从youtube提供的xml Feed中提取特定数据。

XML链接:http://gdata.youtube.com/feeds/api/videos/WFPnl8aEPgo?alt=rss

我已经能够提取如下信息:

标题, 描述

使用此查询字符串:

  

Dim Title As String =   videoInfoNavigator.SelectSingleNode( “/项目[1] /标题”)。值

但是,我无法找到正确的查询字符串来获取

之类的信息

媒体:关键字

2 个答案:

答案 0 :(得分:0)

media:keywords使用绑定到 namespace-uri http://search.yahoo.com/mrss/ < / p>

如果可以注册名称空间前缀,则可以使用这样的XPATH:

/item[1]/media:group/media:keywords

但是,如果您需要一个不依赖于名称空间前缀的更通用的XPATH,您可以这样表达:

/item[1]/*[local-name()='group' and namespace-uri()='http://search.yahoo.com/mrss/']/*[local-name()='keywords' and namespace-uri()='http://search.yahoo.com/mrss/']

应用于您的示例代码:

Dim Keywords As String = videoInfoNavigator.SelectSingleNode("/item[1]/*[local-name()='group' and namespace-uri()='http://search.yahoo.com/mrss/']/*[local-name()='keywords' and namespace-uri()='http://search.yahoo.com/mrss/']").Value

答案 1 :(得分:0)

试试这个:

XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("m", "http://search.yahoo.com/mrss/");
var keywords = doc.CreateNavigator().SelectSingleNode("/item/m:group/m:keywords", ns);
Console.WriteLine(keywords.Value);

请注意,您使用的前缀根本不重要。它只是命名空间的缩写。