C# 如何检查一个节点有多少子节点?
我试图得到一个节点有多少子节点,但我唯一能得到的是它是否有子节点,而不是有多少子节点。例如: 我在C#中使用Xpath(C# 如何检查一个节点有多少子节点?,c#,xml,xpath,C#,Xml,Xpath,我试图得到一个节点有多少子节点,但我唯一能得到的是它是否有子节点,而不是有多少子节点。例如: 我在C#中使用Xpath(XPathNodeIterator,XPathDocument和XPathNavigator) 编辑: iterator.Count 这不是我想要实现的,因为它返回表达式返回的所有节点数。我想知道迭代器下面有多少子节点。当前 这是我使用的Xml文件(例如) 它产生了什么 XPathNodeIterator.Count 应该为您提供子节点计数,如果没有选择节点,则为0 v
XPathNodeIterator
,XPathDocument
和XPathNavigator
)
编辑:
iterator.Count
这不是我想要实现的,因为它返回表达式返回的所有节点数。我想知道迭代器下面有多少子节点。当前
这是我使用的Xml文件(例如)
它产生了什么
XPathNodeIterator.Count
应该为您提供子节点计数,如果没有选择节点,则为0
var count = iterator.Count;
玩参考 纯XPath解决方案--使用此XPath表达式:
count(//*)
(int)iterator.Current.Evaluate("count(*)")
或者,完整的C#code(似乎是迄今为止提供的所有代码中最短的:)
或者,如果要获取当前节点的子节点计数,请使用:
count(//*)
(int)iterator.Current.Evaluate("count(*)")
这就是我想要的。非常感谢:)感谢您的想法,但这将显示所有元素的数量,我希望在具体元素(迭代器)下显示子元素的数量。如果您知道具体节点(元素),请针对当前节点计算此相对XPath表达式:
count(*)
。我刚才看到您正在计算表达式/*
,并认为您想知道所选元素的计数。@_Patryk:请参阅我更新的答案。这是所有答案中最短的表达。
(int)navigator.Evaluate("count(//*)")
(int)iterator.Current.Evaluate("count(*)")