0

元素计数

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

3 回答 3

3
var count = student.GetElementsByTagName("Chandru").Count;
于 2012-06-07T07:31:31.123 回答
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() > 1between groupandselect语句。

于 2012-06-07T07:29:03.277 回答
0

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

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

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

然后你通过的每个元素,通过你的数组,如果找不到元素,将其保存为 NbOccurance=0 的新元素;否则,如果发现增加出现次数。在阅读完您的 xml 文件后,您将获得一个包含元素名称及其出现次数的列表。

于 2012-06-07T07:31:40.223 回答