如何使用 XPATH 检索具有一个或另一个值的节点
我有一个 javascript 函数,需要使用 document.evaluate 通过 xpath 检索某些节点,到目前为止我正在使用类似的东西,
.//span[contains(@title, 'alerting')] | .//span[contains(@title, 'caution')]
但是当要匹配的值更多时,它会变成一个非常长的字符串。我不能使用 [@title = word],因为我需要检索属性包含某些字符串的元素。我已经尝试过类似的事情
.//span[contains(@title, ('alerting'|'caution'))]
,但它没有检索到任何内容。
你能给我一个缩短第一个语法的想法吗?
I have a javascript function that needs to retrieve certain nodes through xpath using document.evaluate, till now I am using something like
.//span[contains(@title, 'alerting')] | .//span[contains(@title, 'caution')]
But it turn in a very long string when values to match are more. I cannot use [@title = word], because I need to retrieve the elements whose atributes contains some string. I have tried things like
.//span[contains(@title, ('alerting'|'caution'))]
But it does not retrieve anything.
Can you give me an idea to shorten the first sintax?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
为什么不直接创建一个函数来创建字符串并以编程方式构建表达式,而不用担心它呢?粗略地说:
您也可以尝试使用
matches
而不是contains
,尽管我不确定 JavaScript 语法是什么,或者是否受支持。Why not just create a function that creates the string and build the expression programmatically, and not worry about it? Roughly:
You could also try using
matches
instead ofcontains
, although I'm not sure what the JavaScript syntax for that would be, or if it's supported.XPath 应该是这样的:-
XPath should be this way:-
这是无效的 XPath - 联合运算符
|
只能具有节点集参数 - 而不是字符串。使用:
This is invalid XPath -- the union operator
|
can only have arguments that are node-sets -- not strings.Use:
您可以使用 jquery,而不是使用
document.evaluate()
,在这种情况下您可以执行以下操作:Instead of using
document.evaluate()
, you could use jquery in which case you could do: