如何指定返回没有最后一行的整个表的Xpath?

时间:2015-04-25 04:35:46

标签: xpath html-table extract

这是表格的代码。我需要提取没有最后一行的整个表。

整张桌子:

 <table class="product-content__table">
    <tr><th class="product-content__th">Состав</th><td>нержавеющая сталь, натуральная кожа </td></tr>
    <tr><th class="product-content__th">Ширина</th><td>2 см</td></tr><tr><th class="product-content__th">Цвет</th><td>серый </td></tr>
    <tr><th class="product-content__th">Страна производства</th><td>Россия </td></tr><tr><th class="product-content__th">Сезон</th><td>Мульти </td></tr>
    <tr><th class="product-content__th">Коллекция</th><td>Весна-лето </td></tr>
    <tr><th class="product-content__th">Артикул</th><td itemprop="sku">RO003DMCMA98</td></tr>
    </table>

我需要在没有这一行的情况下提取整个表:

<tr><th class="product-content__th">Артикул</th><td itemprop="sku">RO003DMCMA98</td></tr>

3 个答案:

答案 0 :(得分:2)

  

我需要包括表格标签在内的所有标签。

XPath只能选择输入中存在的节点。如果输入中有一个包含五行的表元素,并且您想要一个包含四行的表元素,那么输入中没有这样的表元素,因此您无法使用XPath选择它。如果要获得与输入中的任何节点不同的节点,则需要XSLT或XQuery。

答案 1 :(得分:1)

<td><th>不是孩子的兄弟,因此您的xpath中实际上不需要th。并且您希望过滤掉同一tr中的最后table,而不是过滤掉同一td中的最后一个tr

//table[@class="product-content__table"]//tr[position() < last()]/td
如果您想获取/td而非<tr>的列表,请

删除跟踪<td>

答案 2 :(得分:1)

这有效:

//table//tr[position()<last()]