xpath - 比较 XPath 中的两个节点
问题描述
我正在编写一个 Xpath 查询以用作 PMD 中的规则。现在
//Method/ModifierNode[Annotation[@Image = 'Future']]/..[@Image = 'randomMethod']]
给我一个节点和
//ForEachStatement
//MethodCallExpression
[@MethodName = 'randomMethod']
给我另一个。
我想比较这两个,看看第一个查询中的节点名称和第二个查询中的节点名称是否相同。
我正在这样做
//ForEachStatement
//MethodCallExpression
[@MethodName = //Method/ModifierNode[Annotation[@Image = 'Future']]/..[@Image]]
这根本不起作用,并且返回零匹配节点。
解决方案
您比较的值类型有问题
@MethodName
是一个字符串。
//Method/ModifierNode[Annotation[@Image = 'Future']]/..[@Image]
选择一个节点(确保它有一个非空图像)。
因此,当比较两者时,它总是错误的。您想在第二个选择器中获取方法节点的名称,以便您可以比较字符串。你可以这样做……</p>
//Method/ModifierNode[Annotation[@Image = 'Future']]/../@Image
所以你的 XPath 应该看起来像
//ForEachStatement
//MethodCallExpression
[@MethodName = //Method/ModifierNode[Annotation[@Image = 'Future']]/../@Image]
推荐阅读
- html - 通过网络浏览器获得文档的“最后修改”日期
- selenium - Webdriver 自动清除 TextBox 中输入的文本(自动建议的文本)
- html - 表格单元格与图像和文本对齐
- c# - 为什么我的方法不能从用户输入构建正确的 XML 查询?
- c# - 如何通过 ExchangeService C# 发送电子邮件
- ios - 构建成功但运行崩溃,而其他人在从 svn 和 cocoapods 检查 ios 代码后成功运行
- .net-core - 安装 2.1.500 版本后如何安装 .NET Core SDK 2.1.401?
- shell - 终端/Osascript:自动隐藏和显示菜单栏
- c - 结构和位域奇怪的行为
- android - 在数据绑定方法引用中传递视图 ID 或引用