计算XML元素中的属性数

时间:2013-07-16 13:51:13

标签: c# xml linq

我刚开始使用LINQ虽然我有一些使用C#的经验。目前正在使用LINQPad 4。

我正在尝试计算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

1 个答案:

答案 0 :(得分:4)

我会对文档中的所有元素进行循环,然后计算每个元素的属性:

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