La lectura de un XML en C #
-
29-09-2019 - |
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?
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"
.