Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为PMD Xpath规则设置嵌套条件_Xpath_Pmd - Fatal编程技术网

如何为PMD Xpath规则设置嵌套条件

如何为PMD Xpath规则设置嵌套条件,xpath,pmd,Xpath,Pmd,我的规则要求我只将它们应用于名称中没有“get”的方法。换句话说,我的规则只需要应用于类中的非getter方法。我知道要掌握所有非getter方法,我可以使用 //MethodDeclarator[not(contains(@Image,'get'))] 但是,我不知道在哪里插入规则逻辑的语法。是这样的吗 //MethodDeclarator[ not(contains(@Image,'get')) 'Some Rule Statements' ] 我看到了。在某些示例代码的[]内的语

我的规则要求我只将它们应用于名称中没有“get”的方法。换句话说,我的规则只需要应用于类中的非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']

您至少需要对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的知识,知道我是否正在使用我认为正在使用的节点集会变得非常烦人。