2012-06-07 80 views
0

Element count如何获得重复值的XML元素的数量在WPF

在上图中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
var count = student.GetElementsByTagName("Chandru").Count; 
+0

非常感谢... –

0

我认为它会使用LINQ to XML和X-类简单:

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。如果您只想接收那些不止一次出现的名称,则可以在groupselect之间添加where g.Count() > 1声明。

0

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

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

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

然后,每个传递thorugh元件,通过您的阵列中,如果没有找到该elementwas,保存为与NbOccurance = 0新元件; 否则,如果发现增加了出现次数。 在阅读你的xml结束时,你会得到一个包含元素名称和它们出现的列表。