Извлечь информацию XML из канала? - PullRequest
0 голосов
/ 17 июля 2010

Я пытаюсь извлечь конкретные данные из xml-фида, полученного с YouTube.

XML-ссылка: http://gdata.youtube.com/feeds/api/videos/WFPnl8aEPgo?alt=rss

Мне удалось извлечь такую ​​информацию как:

Заголовок, описание

с использованием этой строки запроса:

Dim Title As String = videoInfoNavigator.SelectSingleNode ("/ item [1] / title").Value

Однако я не могу найти правильную строку запроса для получения информации, подобной

media: Keywords

Ответы [ 2 ]

0 голосов
/ 18 июля 2010

Попробуйте это:

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);

Обратите внимание, что префикс, который вы используете, не имеет значения вообще. Это просто сокращение пространства имен.

0 голосов
/ 18 июля 2010

media:keywords использует media префикс пространства имен , который связан с namespace-uri http://search.yahoo.com/mrss/

Если вы можете зарегистрировать префикс пространства имен, вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...