2010-07-17 6 views
0

J'essaie d'extraire des données spécifiques d'un flux XML provenant de YouTube.Extrait les informations XML du flux?

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

Je suis en mesure d'extraire les informations comme:

Titre, Description de

en utilisant cette chaîne de requête:

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

Cependant, je ne suis pas en mesure de trouver la chaîne de requête appropriée pour obtenir des informations comme

médias: mots-clés

Répondre

0

Le media:keywords utiliser les médiaspréfixe d'espace de noms, qui est lié au namespace-urihttp://search.yahoo.com/mrss/

Si oui u peut enregistrer le préfixe d'espace de noms, vous pouvez utiliser un XPATH comme ceci:

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

Cependant, si vous avez besoin d'un XPATH plus générique qui ne repose pas sur le préfixe d'espace de noms, vous pouvez l'exprimer comme ceci:

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

appliquée à votre exemple de code:

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 
+0

Merci exemple fonctionne comme un charme. Je dois étudier plus cet exampe car je ne comprends pas encore beaucoup le XML :) THAAANKK! – yan

0

Essayez ceci:

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

Notez que le préfixe que vous utilisez n'a pas d'importance. C'est juste une abréviation pour l'espace de noms.