我有下表,我想要一个表达式来获得类别“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>
答案 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”属性的第二个元素。