如何获取wpf中重复值xml元素的计数

时间:2012-06-07 07:21:53

标签: c# wpf

Element count

在上图中,元素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;
        }
    }

3 个答案:

答案 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();

这将为您提供包含两个属性的元素列表:NameCount。如果您只想接收多次出现的名称,则可以在where g.Count() > 1group语句之间添加select

答案 2 :(得分:0)

我不是C#程序员,但是,我可以给你算法然后你可以尝试将它应用到你的程序上。

定义一个struct数组,该struct必须有两个字段:ElmntName和NbOccurance。

struct Elmnt
{ String ElmntName;
  Int NbOccurance;
} MyElement;

然后你传递的每个元素都会通过你的数组,如果找不到元素,则将它保存为NbOccurance = 0的新元素; 否则,如果发现增加了发生的次数。 在读取xml的最后,您将获得一个包含元素名称及其出现的列表。