1

我正在尝试在希望任一表达式起作用的地方使用 OR 运算符。

表达工作单独但不在一起你能帮忙请看下面

//*[[@class='eline'][1]/following-sibling::tr] OR [[@class='eline'][1]]

你好,

下面是一个更好的示例,因此我对您的第一个解决方案感到满意,因为它选择了所有内容,但是我想选择 alt="Ab" 的元素,因为该元素的位置可能会改变,所以我希望 xpath 是动态的可能的

<tr class="eline">
<tr>
<td class="norm" nowrap=""/>
<td class="norm" nowrap="">
<td class="norm" nowrap="">
<td class="norm" nowrap="">cccc cccc </td>
<td class="norm" nowrap="">99999 </td>
<td class="norm" nowrap=""/>
<td>
<td class="norm" nowrap="">
<img width="20" vspace="0" border="0" hspace="0" height="15" alt="Ab" name="abs3" src="images/sp_abs.gif"/>
</td>
<td class="norm" nowrap="">
<td class="norm" nowrap="">testcase33 testcase33 </td>
<td class="norm" nowrap="">33100 </td>
<td class="norm" nowrap=""/>
<td class="norm" nowrap=""/>
</tr>
<tr class="eline">
<tr>
<tr class="eline">
<tr>
<tr>
4

1 回答 1

1

认为您正在尝试选择:

  • class具有属性的第一个元素eline
  • 以下所有同级tr元素

最简单的方法是简单地将两个使用联合|运算符的选择器组合起来:

//*[@class='eline'][1]/following-sibling::tr | //*[@class='eline'][1]

例如,使用这个 XML:

<table>
    <tr name="first"/>
    <tr class="eline" />
    <tr name="third"/>
    <tr name="fourth"/>
</table>

上面的 XPath 会给

<tr class="eline"/>
<tr name="third"/>
<tr name="fourth"/>

假设你想img[@alt="Ab"]从上面代码选择的元素中找到一个元素,你可以这样做:

(//*[@class='eline'][1]/following-sibling::tr | //*[@class='eline'][1]) // img[@alt="Ab"]
于 2013-11-04T14:10:39.053 回答