Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 节点在XML文档中具有的最大属性数_C#_Xml_Max - Fatal编程技术网

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

C# 节点在XML文档中具有的最大属性数,c#,xml,max,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)

我们感兴趣的是在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;

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

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


你的foreach循环看起来不错。是否确定只查看根元素,而不在文档中递归?

也可以使用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导航考虑每个嵌套级别上的所有节点。

我们不需要在文档中递归。事实上,我们的XML是这样的:。听起来还可以吗?[插入关于使用LINQ with.Maxn=>n.Attributes.Count的注释][插入回复注释,说明LINQ是过度杀伤力]感谢您提供的代码,但不起作用。将错误“>”作为无效表达式提供。没有认识到Maxx=>x.Attributes.Count.Mmh真的很奇怪,我刚刚测试了相同的代码,它运行良好,我的目标是.NET3.5。你有使用系统吗;在您的类标题中?谢谢,但我们的生产服务器仍在运行.Net 2.0:好的,因为您选择我的作为接受答案,我添加了一个与.Net 2.0兼容的解决方案;谢谢虽然蒂姆帮了我很多忙,但我一直在寻找一个新的解决方案。我知道,随着手动循环/遍历时代的结束,一定有一些最新的解决方案。再次感谢。