如何使用XPath表达式选择所有叶节点?

时间:2010-10-13 18:04:52

标签: syntax xpath selectnodes

我相信这是可能的,但无法弄清楚语法。像这样:

xmlNode.SelectNodes("//*[count(child::*) <= 1]")

但这不正确。

4 个答案:

答案 0 :(得分:56)

使用

//node()[not(node())]

如果只需要元素叶子节点(这需要澄清 - 是非元素子元素被认为是叶子节点的元素吗?),那么下面的XPath表达式会选择它们:

//*[not(*)]

上面的两个表达式都可能是选择所需节点(任意节点或元素 - 叶节点)的最短

答案 1 :(得分:25)

任何没有元素子元素的元素

//*[not(child::*)]

答案 2 :(得分:2)

为什么或等于为1?

xmlNode.SelectNodes("//*[count(child::*) = 0]")

在此网站http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

进行测试等

非常有帮助..

答案 3 :(得分:0)

我正在添加这个XSLT答案,因为看起来google的正面匹配缺乏这样的解决方案:

经过长时间的努力将CDATA提取为XML,最终,这个表达对我来说效果最好:

<xsl:template match="*[not(child::*)]/text()">