Lesen einer XML in C #
-
29-09-2019 - |
Frage
Ich verwende System.XML eine XML-Datei in C # zu lesen. Zuerst öffne ich die Datei (lokal) ... und die Verwendung foreach, um die Werte zu erhalten, wie folgt:
XmlNodeList titles = xmlDoc.GetElementsByTagName("title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}
Das Problem ist, ich habe viele RSS-Tags Titel in meiner Datei mit dem Namen, ich möchte nur diejenigen lesen, was in <entry></entry>
ist?
Lösung
Siehe ParentNode und Local Eigenschaften:
if (title.ParentNode.LocalName == "entry") { ... }
Andere Tipps
In der Regel ist es einfacher zu benutzen XPaths in diesem Fall, so würde der Code etwas aussehen wie folgt aus:
XmlNodeList titles = xmlDoc.SelectNodes("//entry/title");
foreach (XmlNode title in titles)
{
rowNews = new ListViewItem();
rowNews.Text = (title.ChildNodes[0].Value);
listView1.Items.Add(rowNews);
}
Ich schlage vor, mit XDocument
im System.Xml.Linq
Namespace.
Dann können Sie einfach schreiben document.Elements("entry").Elements("title")
Haben Sie versucht, so etwas wie Zugangs- / Titel als XPath?
Hier ist ein Tipp: Blick auf, wie Sie Iterierte durch das erste „Titel“ node
.