使用 XPath 获取除某些节点(对于 Umbraco)之外的所有节点

Get all nodes except some (for Umbraco) using XPath

我尝试使用 XPath 获取除我提供的节点之外的所有节点...代码:

UmbracoHelper.TypedContentAtXPath("//[not(contains(@alias, 'myNode1') or contains(@alias, 'myNode2'))]");

但是我收到一个错误:

Expression must evaluate to a node-set.

我的错误在哪里?

您未指定 元素 名称,谓词(方括号内的表达式)将应用到该名称。它可能是一个特定的名称 - 我不完全知道 - 或者通配符(*,这意味着任何名称的 elements):

//*[not(contains(@alias, 'myNode1') or contains(@alias, 'myNode2'))]

我不确定这是否是您的意图,但您的代码将在文档类型别名上进行通配符匹配。所以它将匹配 MyNode12 上的 myNode1。您可以使用类似这样的方法进行精确匹配(xpath 也稍微快一些,因为它不使用包含):

//*[self::myNode1 or self::myNode2]