Pregunta

Estoy usando System.XML para leer un archivo XML en C #. Primero abro el archivo (localmente) ... y el uso foreach para obtener los valores, así:

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

El problema es que tengo muchas etiquetas RSS llamados título en mi archivo, me gustaría leer sólo los que lo son <entry></entry> dentro?

¿Fue útil?

Solución

ParentNode y LocalName propiedades:

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

Otros consejos

Por lo general, es más fácil de usar XPaths en este caso, por lo que su código sería algo de esta manera:

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

sugiere emplear XDocument en el espacio de nombres System.Xml.Linq.

A continuación, puede escribir document.Elements("entry").Elements("title")

¿Usted ha intentado algo así como la entrada / título como su XPath?

Aquí hay una pista: vistazo a cómo se iterar a través del primer nodo "título"

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top