如何使用XPATH检索具有一个或另一个值的节点
How do I retrieve nodes with one or another value with XPATH
我有一个javascript函数,需要使用document.evaluate通过xpath检索某些节点,到目前为止,我使用的是类似的东西
.//span[contains(@title, 'alerting')] | .//span[contains(@title, 'caution')]
但当要匹配的值更多时,它会变成一个很长的字符串。我不能使用[@title=word],因为我需要检索其atributes包含某些字符串的元素。我试过之类的东西
.//span[contains(@title, ('alerting'|'caution'))]
但它没有检索到任何内容。
你能给我一个缩短第一次犯罪的主意吗?
为什么不创建一个函数来创建字符串并以编程方式构建表达式,而不用担心呢?大致:
function spanContains(s) {
return ".//span[contains(@title, '" + s + "')]";
}
var contains = [spanContains('word1'), spanContains('word2')].join("|");
您也可以尝试使用matches
而不是contains
,尽管我不确定它的JavaScript语法是什么,或者是否支持它。
XPath应该是这样的:-
.//span[contains(@title, 'alerting') or contains(@title, 'caution')]
.//span[contains(@title, ('alerting'|'caution'))]
这是无效的XPath--联合运算符|
只能具有节点集的参数,而不能具有字符串。
使用:
.//span[@title
[contains(.,'alerting')
or
contains(.,'caution')
]
]
您可以使用jquery,而不是使用document.evaluate()
,在这种情况下您可以执行:
$('span').filter(function() {
var title = $(this).attr('title');
return title != undefined && title.search(/(alerting|caution)/) != -1;
});
相关文章:
- 将节点数据分配给另一个变量jstree
- 文件的节点自动化移动到另一个文件夹中
- 如果某个值在另一个节点中,我如何每秒自动单击一个链接
- XPath以基于另一个节点按位置选择节点's的位置
- 如何根据另一个节点中的数据对 Firebase 阵列进行排序
- 节点 js 从客户端和另一个节点模块调用相同的延迟函数
- 节点js可以计算两个输入字段的值并更新另一个字段吗?
- 节点群集未将任务分派给另一个可用的工作线程
- JQuery函数绑定到身体节点的点击事件,另一个点击事件立即执行
- 节点.js - 从另一个函数/对象发出事件
- 在节点 JS 中将值从一个对象更新到另一个对象
- 使用 node.js 启动另一个节点应用程序
- 如何在我的节点中包含另一个参数.js Web 服务
- 使用 Vim 作为 Javascript 沙箱:如何将缓冲区写入节点并在另一个缓冲区中读取结果
- 在使用d3js单击另一个节点时添加节点
- 使用另一个节点查询JSON节点值's值
- 获取从一个节点到另一个节点的 DOM 路径
- 如何在一个节点包中创建一个AngularJs指令,然后将它包含在应用的另一个节点包中
- 确定一个节点是否与另一个节点重叠
- 如何将Firebase中的节点(对象)复制到另一个节点