【问题标题】:Is there a way to correctly concatenate three arbitrary XPath expressions to result in a new valid XPath expression?有没有办法正确连接三个任意 XPath 表达式以生成一个新的有效 XPath 表达式?
【发布时间】:2010-11-01 17:54:47
【问题描述】:

有没有办法正确连接三个任意 XPath 表达式以生成新的有效 XPath 表达式?

【问题讨论】:

  • @user488963:要回答这个问题,需要 XPath 表达式示例。
  • .//a[@class='no-hover hint']/b/text() .//a[@class='no-hover hint-2']/b/text () .//a[@class='no-hover hint'-3]/b/text() 有三个表达式
  • 好问题,+1。请参阅我的答案以获取许多示例。

标签: xpath expression


【解决方案1】:

更新:OP在评论中指出三个表达式选择文本节点。

在这种情况下,使用联合运算符 (|) 似乎最合适。


有没有办法正确 连接三个任意 XPath 表达式以产生新的有效 XPath 表达式?

有许多可能的方法来做到这一点,其中一些可能会受益于了解评估的返回类型。

始终“有效”的组合子之一(尽管可能并不总是有意义)是:

concat(Expr1, Expr2, Expr3)

其他示例:

number(Expr1) + number(Expr2) + number(Expr3)

boolean(Expr1) or boolean(Expr2) or boolean(Expr3)

如果保证表达式选择一个节点集,那么这个表达式(节点集的并集)也会组合它们:

Expr1 | Expr2 | Expr3

在 XPath 2.0 中,此表达式应始终有效(连接到一系列项目):

Expr1 , Expr2 , Expr3

或者这个

  if(boolean(Expr1))
    then Expr2
    else Expr3

【讨论】:

  • +1 非常好的答案。此外,表达式是有问题的 cmets。
【解决方案2】:

当然。如果它们不相交,则将它们放在一起并用“或”语句分隔。如果它们是加法的,那么您可以对它们执行 (.net) Path.Combine()。

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2022-10-03
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多