在上图中,元素Chandru重复两次。
所以我必须计算重复的元素。
但我不知道重复元素的计数。
请帮帮我。
这里是我写的代码
public XML_3()
{
this.InitializeComponent();
XmlDocument doc = new XmlDocument();
doc.Load("D:/student_2.xml");
XmlNodeList student_list = doc.GetElementsByTagName("Student");
foreach (XmlNode node in student_list)
{
XmlElement student = (XmlElement)node;
string sname = student.GetElementsByTagName("Chandru")[0].InnerText;
string fname = student.GetElementsByTagName("FName")[0].InnerText;
string id = student.GetElementsByTagName("Chandru")[0].Attributes["ID"].InnerText;
Window.Content = sname + fname + id;
}
}
答案 0 :(得分:3)
var count = student.GetElementsByTagName("Chandru").Count;
答案 1 :(得分:0)
我认为使用LINQ to XML和X-Classes会更容易:
var doc = XDocument.Load("D:/student_2.xml");
var results = (from s in doc.Root.Elements()
group s by s.Name into g
select new { Name = g.Key, Count = g.Count() }).ToList();
这将为您提供包含两个属性的元素列表:Name
和Count
。如果您只想接收多次出现的名称,则可以在where g.Count() > 1
和group
语句之间添加select
。
答案 2 :(得分:0)
我不是C#程序员,但是,我可以给你算法然后你可以尝试将它应用到你的程序上。
定义一个struct数组,该struct必须有两个字段:ElmntName和NbOccurance。
struct Elmnt
{ String ElmntName;
Int NbOccurance;
} MyElement;
然后你传递的每个元素都会通过你的数组,如果找不到元素,则将它保存为NbOccurance = 0的新元素; 否则,如果发现增加了发生的次数。 在读取xml的最后,您将获得一个包含元素名称及其出现的列表。