6

我有两个 Xpath 表达式...

//*[@id='gutter']/p[strong[text()='Date:']]/text()
//*[@id='gutter']/p[strong[text()='Time:']]/text()

如何编写一个组合上述两个表达式并返回与单独运行上述每个表达式的结果相同的节点集的单个 xpath 表达式?

4

2 回答 2

24

一般来说,这个 Xpath 表达式:

expr1 | expr2

选择expr1选择的所有节点和expr2选择的所有节点的并

|字符表示 XPath联合运算符。

当您希望返回由多个 XPath 表达式选择的节点的联合时,您可以在任何情况下使用联合运算符。

在这个具体案例中

 //*[@id='gutter']/p[strong[text()='Date:']]/text()
|
 //*[@id='gutter']/p[strong[text()='Time:']]/text()

虽然可以优化此表达式,但它的优点是联合运算符在所有此类情况下都“有效”,几乎可以机械地表达,节省时间并消除了通过更复杂的重构引入错误的可能性。

于 2012-05-02T02:00:28.043 回答
6

怎么样:

//*[@id='gutter']/p[strong[text()='Date:' or text()='Time:']]/text()

这或多或少是不言自明的。

于 2012-05-01T18:55:37.167 回答