节点在XML文档中具有的最大属性数

时间:2010-08-18 09:55:58

标签: c# xml max

我们感兴趣的是找到节点在XML文档中具有的最大属性数。我的代码在下面使用C#:

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(@"C:\ABC.xml");
        XmlNode root = xmlDoc.DocumentElement;

        int nodeAttrCount = 0;
        foreach (XmlNode node in root)                            
            if (nodeAttrCount < node.Attributes.Count)
                nodeAttrCount = node.Attributes.Count;

我们感兴趣的是:我们有什么比这更好的事情。就像给我们相同结果或任何其他选择的任何方法或属性一样。

2 个答案:

答案 0 :(得分:0)

这是三行代码,适用于相当小的需求。我不希望这已经存在于.NET框架中。

您的foreach循环看起来很好。您确定只想查看根元素,而不是在文档中递归吗?

答案 1 :(得分:0)

您还可以使用LINQ to XML:

XElement el = XElement.Load("MyXML.xml");
int maxAttr = el.DescendantNodesAndSelf().OfType<XElement>().Max(x => x.Attributes().Count());

上面的代码遍历所有xml节点(它也适用于嵌套节点)并获得最大数量的属性。


对于.net 2.0:

XmlDocument doc = new XmlDocument();
doc.Load("MyXML.xml");
int max = 0;
foreach (XmlNode xmlNode in doc.SelectNodes("//*"))
   if (max < node.Attributes.Count)
       max = node.Attributes.Count;

这与您的解决方案基本相同; 主要区别在于它考虑了每个嵌套级别的所有节点(使用XPath导航)。