Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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# 如何检查一个节点有多少子节点?_C#_Xml_Xpath - Fatal编程技术网

C# 如何检查一个节点有多少子节点?

C# 如何检查一个节点有多少子节点?,c#,xml,xpath,C#,Xml,Xpath,我试图得到一个节点有多少子节点,但我唯一能得到的是它是否有子节点,而不是有多少子节点。例如: 我在C#中使用Xpath(XPathNodeIterator,XPathDocument和XPathNavigator) 编辑: iterator.Count 这不是我想要实现的,因为它返回表达式返回的所有节点数。我想知道迭代器下面有多少子节点。当前 这是我使用的Xml文件(例如) 它产生了什么 XPathNodeIterator.Count 应该为您提供子节点计数,如果没有选择节点,则为0 v

我试图得到一个节点有多少子节点,但我唯一能得到的是它是否有子节点,而不是有多少子节点。例如: 我在C#中使用Xpath(
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(*)")