如何通过XPath选择表项

时间:2015-05-20 15:40:27

标签: html xml xpath

我有下表,我想要一个表达式来获得类别“OC”的百分比。是否可以通过XPath提取?

<tbody>
  <tr>
    <th class="textL">Category</th>
    <th class="textR">No. of Items</th>
    <th class="textR">Percentage</th>
  </tr>
  <tr class="data_row">
    <td>OC</td>
    <td class="textR">100</td>
    <td class="textR">4.70</td>
  </tr>
  <tr class="data_row">
    <td>FP</td>
    <td class="textR">200</td>
    <td class="textR">38.82</td>
  </tr>
  <tr class="data_row">
    <td>FI</td>
    <td class="textR">300</td>
    <td class="textR">20.39</td>
  </tr>
</tbody>

4 个答案:

答案 0 :(得分:3)

根据另一个条目的值选择表条目

选择给定&#34; OC&#34;的百分比分类:

//td[.='OC']/following-sibling::td[count(../..//th[.='Percentage']/preceding-sibling::th)]/text()

上面的XPath将返回

"4.70"

按要求。

请注意,只要目标列继续命名为&#34;百分比&#34;它将继续面对许多更改,包括行和列重新排列。并保留在第一列的“类别”列之后。人们甚至可以通过取两列位置的差异来进一步推广表达式,而不是假设Category是第一列。

解释:从包含&#34; OC&#34;的td中,查看等于&#34;百分比&#34;的位置的兄弟姐妹的数量。列标题,并在正确的兄弟td中选择文本。

答案 1 :(得分:1)

另一个XPath,也取决于表格列的顺序

//td[text()='OC']/following-sibling::td[2]

(解释:在td的兄弟姐妹中包含第二个td兄弟,其中包含文字&#39; OC&#39;)

答案 2 :(得分:0)

有多个XPath。这个可行:

/tbody[1]/tr[2]/td[3]/text()

但它基于XML的当前布局

答案 3 :(得分:0)

这有效:

tbody/tr/td[. eq "OC"]/../td[@class eq "textR"][2]/text()

它假设OC td元素将存在,并且您想要的值是具有“textR”属性的第二个元素。