XPATH OR 运算符看不到



我正在尝试使用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>

我认为您正在尝试选择:

  • 具有 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"]

最新更新