2010-10-12 82 views
2

J'utilise System.Xml pour lire un fichier XML en C#. D'abord, je ouvrir le fichier (localement) ... et utiliser foreach pour obtenir les valeurs, comme ceci:Lecture d'un fichier XML en C#

XmlNodeList titles = xmlDoc.GetElementsByTagName("title"); 
foreach (XmlNode title in titles) 
{ 
rowNews = new ListViewItem(); 
rowNews.Text = (title.ChildNodes[0].Value); 
listView1.Items.Add(rowNews); 
} 

Le problème est, j'ai beaucoup rss balises appelé titre dans mon dossier, je voudrais lire seulement ceux qui sont à l'intérieur <entry></entry>?

Répondre

0

Voir ParentNode et LocalName propriétés:

if (title.ParentNode.LocalName == "entry") { ... } 
+0

Merci monsieur, j'aime votre chemin le meilleur et il fonctionne! Merci à tous les autres aussi! –

+0

Les approches XPath sont bonnes aussi. C'est juste une façon plus simple de faire les choses si vous êtes familier avec DOM et non avec XPath. – LarsH

0

Voici un indice: regardez comment vous parcourez le premier nœud "title".

0

Avez-vous essayé quelque chose comme entry/title comme xpath?

7

Habituellement il est plus facile à utiliser XPaths dans ce cas, de sorte que votre code ressemblerait à quelque chose comme ceci:

XmlNodeList titles = xmlDoc.SelectNodes("//entry/title"); 
foreach (XmlNode title in titles) 
{ 
rowNews = new ListViewItem(); 
rowNews.Text = (title.ChildNodes[0].Value); 
listView1.Items.Add(rowNews); 
} 
1

Je suggère d'utiliser XDocument dans le System.Xml.Linq espace de nommage.

Ensuite, vous pouvez simplement écrire document.Elements("entry").Elements("title")