如何使用nokogiri选择指定元素后的元素?

时间:2013-04-23 08:54:50

标签: ruby nokogiri

以下表为例,我知道如何通过xapth的text()函数匹配<td>'Title_A'</td>,有没有直接的方法可以选择<td> text_unknown </td>之后呢? :

<table>
    <tr><td rowspan=2> Title_A </td>    <td> text_unknown </td></tr>
                                    <tr><td> text_unknown </td></tr>

    <tr><td rowspan=2> Title_B </td>    <td> text_unknown </td></tr>
                                    <tr><td> text_unknown </td></tr>

    <tr><td rowspan=4> Title_C </td>    <td> text_unknown </td></tr>
                                    <tr><td> text_unknown </td></tr>
                                    <tr><td> text_unknown </td></tr>
                                    <tr><td> text_unknown </td></tr>
</table>

2 个答案:

答案 0 :(得分:2)

假设您将'Title_A'与以下XPath匹配:

//td[text()='Title_A']

下一个单元格将是

//td[text()='Title_A']/following-sibling::td[1]

或者,如果您已在变量中包含标题单元格:

title_a = doc.xpath("//td[text()='Title_A']")

然后您可以使用DOM方法next_sibling

next_cell = title_a.next_sibling

答案 1 :(得分:0)

对于xml使用css,对xml使用xpath。 +是css下一个相邻的兄弟选择器。

doc.at('td[text()="Title_A"] + td')

我看到Title_A周围有一些空格,所以可能:

doc.at('td[text()*="Title_A"] + td')