2013-07-16 108 views
1

我剛開始使用LINQ,儘管我有一些使用C#的經驗。目前使用LINQPad 4.統計XML元素中的屬性數

我想要統計XML文檔中每個元素的屬性數量。

這就是我已經得到的,它是LINQPad中的樣本的混合物,並且已經在這個主題上進行了研究。我正在尋找的是做這個工作的一種方式,或者做這個更好的方法。

XElement config = XElement.Parse (
@"<configuration> 
<client enabled='1' enabled2='0' enabled3='1'> 
    <timeout>30</timeout> 
</client> 
<client enabled='true'> 
    <timeout>30</timeout> 
    <timeout>30</timeout> 
</client> 
</configuration>"); 


foreach (XElement child in config.Elements()){ 
Console.WriteLine("Start"); 
int attNumbers = config.Descendants().Attributes().Select(att => att.Name).Distinct(). Count(); 
Console.WriteLine(attNumbers);} 

此解決方案似乎只計算屬性的最大數量。

任何幫助將不勝感激。

研究: http://social.msdn.microsoft.com/Forums/en-US/8379f0d4-a4f1-41ec-9f45-4573dba81efe/count-number-of-elements-and-attributes-using-linq

+0

檢查你的foreach循環,看起來應該是'詮釋attNumbers = child.Attributes()。選擇(att => att.Name).Distinct()。Count();' – Fung

+0

您的明星,非常感謝。 – MCooke

回答

4

我會做一個循環在文檔中的所有元素,然後指望每個屬性:

foreach (var element in config.DescendantsAndSelf()) 
{ 
    Console.WriteLine("{0}: {1} attributes", 
     element.Name, 
     element.Attributes().Count() 
    ); 
}