La lecture d'un XML en C #
-
29-09-2019 - |
Question
J'utilise System.Xml pour lire un fichier xml en C #. Tout d'abord j'ouvre le fichier (localement) ... et l'utilisation foreach pour obtenir les valeurs, comme ceci:
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 balises rss appelé le titre dans mon dossier, je voudrais lire que les ce qui sont à l'intérieur <entry></entry>
?
La solution
Voir ParentNode et LocalName les propriétés:
if (title.ParentNode.LocalName == "entry") { ... }
Autres conseils
En général, il est plus facile à utiliser dans ce cas XPath , 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);
}
Je suggère d'utiliser XDocument
dans l'espace de noms System.Xml.Linq
.
Ensuite, vous pouvez simplement écrire document.Elements("entry").Elements("title")
Avez-vous essayé quelque chose comme entrée / titre comme XPath?
Voici un indice: regardez comment vous itérer à travers le premier noeud « title »
.