我的规则要求我将它们仅应用于没有“获取”作为其名称一部分的方法。换句话说,我的规则只需要应用于类中的非getter方法。我知道要掌握所有非getter方法,我可以使用
//MethodDeclarator[not(contains(@Image,'get'))]
但是,我不知道我在哪里插入规则逻辑的语法。是吗
//MethodDeclarator[
not(contains(@Image,'get'))
'Some Rule Statements'
]
我看到了使用。在一些示例代码中的[]内部语句的开头。它们用于什么?
在我的特殊情况下,我需要将以下各个部分组合在一起,但到目前为止我还无法完成它。
第1部分:
//PrimaryExpression[not(PrimarySuffix/Arguments)]
第2部分:
//MethodDeclarator[not(contains(@Image,'get'))]
第3部分:
//PrimaryExpression[PrimaryPrefix/@Label='this']
答案 0 :(得分:1)
您需要至少掌握一些XPath的基本知识/理解。
我在一些内部的[]内部的语句开头看到了
.
的使用 示例代码。它们用于什么?
[]
称为谓词。它必须包含布尔表达式。它必须立即进行节点测试。这为满足要选择的节点测试的节点指定了附加条件。
例如:
/*/num
选择名为num
的所有元素,这些元素是XML文档顶部元素的子元素。
但是,如果我们只想选择其值为奇数的num
个元素,我们会在谓词中添加这个附加条件:
/*/num[. mod 2 = 1]
现在,最后一个表达式选择名为num
的所有元素,这些元素是XML文档和的顶部元素的子元素,其字符串值表示奇数。
.
表示上下文节点 - 这是迄今为止已选择的节点(或评估完整XPath表达式的起始节点)。
在我的特殊情况下,我需要将以下各个部分组合在一起......
你忘了说三种表达方式应该以何种方式组合起来。在XPath中,一些常用的“组合器”是运算符and
,or
和函数not()
。
例如,如果要选择由所有三个提供的XPath表达式选择的元素,则可以使用and
运算符:
//PrimaryExpression
[not(PrimarySuffix/Arguments)
and
PrimaryPrefix/@Label='this'
]