我们感兴趣的是找到节点在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;
我们感兴趣的是:我们有什么比这更好的事情。就像给我们相同结果或任何其他选择的任何方法或属性一样。
答案 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导航)。