Leggendo un XML in C #
-
29-09-2019 - |
Domanda
Sto utilizzando System.Xml di leggere un file XML in C #. In primo luogo ho aperto il file (in loco) ... e l'uso foreach per ottenere i valori, in questo modo:
XmlNodeList titles = xmlDoc.GetElementsByTagName("title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}
Il problema è che ho molti tag rss chiamati titolo nel mio file, mi piacerebbe leggere solo quelli che cosa sono <entry></entry>
dentro?
Soluzione
ParentNode e LocalName proprietà:
if (title.ParentNode.LocalName == "entry") { ... }
Altri suggerimenti
Di solito è più facile da usare XPaths in questo caso, in modo che il codice sarà qualcosa in questo modo:
XmlNodeList titles = xmlDoc.SelectNodes("//entry/title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}
Io suggerisco di usare XDocument
nello spazio dei nomi System.Xml.Linq
.
Poi si può semplicemente scrivere document.Elements("entry").Elements("title")
Hai provato qualcosa di simile di entrata / titolo come la tua XPath?
Ecco un suggerimento: un'occhiata a come si iterate attraverso il primo nodo "titolo"
.