Boucle Foreach XmlNodeList
Actuellement, j'ai le code suivant:
XmlDocument xDoc = new XmlDocument();
xDoc.Load("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=twitter");
XmlNodeList tweets = xDoc.GetElementsByTagName("text");
foreach (int i in tweets)
{
if (tweets[i].InnerText.Length > 0)
{
MessageBox.Show(tweets[i].InnerText);
}
}
Qui ne fonctionne pas, il me donne System.InvalidCastException
sur le foreach ligne.
Le code suivant fonctionne parfaitement (pas de foreach, la i
est remplacé par un zéro):
XmlDocument xDoc = new XmlDocument();
xDoc.Load("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=twitter");
XmlNodeList tweets = xDoc.GetElementsByTagName("text");
if (tweets[0].InnerText.Length > 0)
{
MessageBox.Show(tweets[0].InnerText);
}
tweets
n'est pas une séquence d'entiers - c'est une séquence de nœuds... alors pourquoi voudriez-vous attendre à être en mesure de parcourir avec foreach (int i in ...
)?OriginalL'auteur Devator | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
tweets est un nœud de la liste. Je pense que ce que vous essayez de faire est ceci:
Profiter,
OriginalL'auteur eburgos
.
Je sais qu'il existe déjà une forte réponse, mais vous pouvez le faire comme vous l'avez fait dans votre premier essai, vous avez juste besoin de remplacer l'int avec
XmlNode
OriginalL'auteur YAYAYAYA
Il n'est pas de
Int
type, C'est la raison pour laquelle vous faites un casting d'exception. Vous pouvez remplacer int avec le type approprié ou tout simplement faire usage de l'inférence de type (implicitement les variables de type) pour gérer cela. Ici, je suis en utilisanttypeinference
.en disant typevar
, Le compilateur va comprendre qu'il est du type de la variable d'itérateur danstweets
collectionEDIT : Avec le Merveilleux LINQtoXML, Votre code peut être réécrite de la manière.
for
boucle, afin que je puisse effectuer une itération sur eux. Merci pour la réponse!OriginalL'auteur Shyju
Toutes les réponses semblent être un peu dépassé Impératif exemples je vais donc ajouter un déclarative. Ce n'est pas faire ce que l'OP voulais, mais je suis sûr que vous obtenez le point.
OriginalL'auteur HMR
J'ai changé le "je", qui vous ne pouvez pas utiliser, à XmlNode, qui sélectionne une seule ligne de votre liste.
OriginalL'auteur Joseph