如何为PMD Xpath规则设置嵌套条件
我的规则要求我只将它们应用于名称中没有“get”的方法。换句话说,我的规则只需要应用于类中的非getter方法。我知道要掌握所有非getter方法,我可以使用如何为PMD Xpath规则设置嵌套条件,xpath,pmd,Xpath,Pmd,我的规则要求我只将它们应用于名称中没有“get”的方法。换句话说,我的规则只需要应用于类中的非getter方法。我知道要掌握所有非getter方法,我可以使用 //MethodDeclarator[not(contains(@Image,'get'))] 但是,我不知道在哪里插入规则逻辑的语法。是这样的吗 //MethodDeclarator[ not(contains(@Image,'get')) 'Some Rule Statements' ] 我看到了。在某些示例代码的[]内的语
//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']
您至少需要对XPath有一些基本知识/理解 我在一些例子中看到了[]内语句开头使用的
示例代码。它们是用来干什么的
[]
称为谓词。它必须包含布尔表达式。它必须立即执行节点测试。这为满足要选择的节点测试的节点指定附加条件
例如:
/*/num
选择名为num
的所有元素,这些元素是XML文档顶部元素的子元素
但是,如果我们只想选择值为奇数整数的num
元素,我们会在谓词中添加此附加条件:
/*/num[. mod 2 = 1]
现在,最后一个表达式选择名为num
的所有元素,这些元素是XML文档顶部元素的子元素,其字符串值表示奇数整数
表示上下文节点——这是迄今为止选择的节点(或计算完整XPath表达式的起始节点)
在我的特殊情况下,我需要将以下部分组合在一起
你忘了说这三个表达应该怎样组合。在XPath中,一些常用的“组合符”是操作符和,或,以及函数not()
例如,如果要选择由所有三个提供的XPath表达式选择的元素,可以使用和运算符:
//PrimaryExpression
[not(PrimarySuffix/Arguments)
and
PrimaryPrefix/@Label='this'
]
您至少需要对XPath有一些基本知识/理解
我在一些例子中看到了[]内语句开头使用的
示例代码。它们是用来干什么的
[]
称为谓词。它必须包含布尔表达式。它必须立即执行节点测试。这为满足要选择的节点测试的节点指定附加条件
例如:
/*/num
选择名为num
的所有元素,这些元素是XML文档顶部元素的子元素
但是,如果我们只想选择值为奇数整数的num
元素,我们会在谓词中添加此附加条件:
/*/num[. mod 2 = 1]
现在,最后一个表达式选择名为num
的所有元素,这些元素是XML文档顶部元素的子元素,其字符串值表示奇数整数
表示上下文节点——这是迄今为止选择的节点(或计算完整XPath表达式的起始节点)
在我的特殊情况下,我需要将以下部分组合在一起
你忘了说这三个表达应该怎样组合。在XPath中,一些常用的“组合符”是操作符和,或,以及函数not()
例如,如果要选择由所有三个提供的XPath表达式选择的元素,可以使用和运算符:
//PrimaryExpression
[not(PrimarySuffix/Arguments)
and
PrimaryPrefix/@Label='this'
]
今天上午,我阅读了更多关于XPath的内容,并使它们正确地结合在一起。我还意识到PMD中的AST比XML更具欺骗性。与遵循PMD文档中的示例相比,查看原始xml并使用XPath跟踪它要明智得多。我不知道何时使用/Name和@Image,因为我没有意识到它们在XML中的位置。@ttback:是的,我想指出的是,要了解PMD的语义,需要的不仅仅是XPath。是的,我已经非常接近于在节点集中找到一个节点。如果你想的话,你可以查一下我的最新问题。由于没有Intersect和如何使用axis的知识,知道我是否正在使用我认为正在使用的节点集变得非常烦人。今天上午我阅读了更多关于XPath的内容,现在将它们正确地结合起来。我还意识到PMD中的AST比XML更具欺骗性。与遵循PMD文档中的示例相比,查看原始xml并使用XPath跟踪它要明智得多。我不知道何时使用/Name和@Image,因为我没有意识到它们在XML中的位置。@ttback:是的,我想指出的是,要了解PMD的语义,需要的不仅仅是XPath。是的,我已经非常接近于在节点集中找到一个节点。如果你想的话,你可以查一下我的最新问题。如果没有Intersect和如何使用axis的知识,知道我是否正在使用我认为正在使用的节点集会变得非常烦人。