49

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

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

但这不正确。

4

4 回答 4

63

使用

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

如果只需要元素叶节点(这需要澄清——具有非元素子节点的元素是否被视为叶节点?),则以下 XPath 表达式将选择它们:

//*[not(*)]

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

于 2010-10-13T18:16:56.960 回答
30

任何没有子元素的元素

//*[not(child::*)]
于 2010-10-13T18:26:17.633 回答
2

为什么小于或等于1 ?

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

在此站点http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm进行测试等

很有帮助..

于 2010-10-13T18:17:39.037 回答
0

我正在添加这个 XSLT 答案,因为谷歌的前场比赛似乎缺乏这样的解决方案:

经过长期努力将 CDATA 提取为 XML,最终,这个表达式最适合我:

<xsl:template match="*[not(child::*)]/text()">
于 2017-12-05T15:49:38.810 回答