سؤال

أنا أستخدم System.xml لقراءة ملف XML في C#. أولاً أفتح الملف (محليًا) ... وأستخدم Foreach للحصول على القيم ، مثل هذا:

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

المشكلة هي أن لدي العديد من علامات RSS تسمى العنوان في ملفي ، أود أن أقرأ فقط تلك الموجودة في الداخل <entry></entry>?

هل كانت مفيدة؟

المحلول

نرى عقدة الأم و الاسم المحلي الخصائص:

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

نصائح أخرى

عادة ما يكون أسهل في الاستخدام xPaths في هذه الحالة ، لذلك سوف يبدو رمزك شيئًا كهذا:

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

أقترح استخدام XDocument في ال System.Xml.Linq مساحة الاسم.

ثم يمكنك ببساطة الكتابة document.Elements("entry").Elements("title")

هل جربت شيئًا مثل الإدخال/العنوان مثل XPath الخاص بك؟

إليك تلميحًا: انظر إلى كيفية تكرار العقدة "العنوان" الأول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top