如何 select 一个 td 通过其相对 th 的位置?

How to select a td by position of its relative th?

这是我的 HTML 代码:

<html>
    <body>
        <table border=1> 
            <tr> 
                <th>foo</th> 
                <th>bar</th> 
            </tr> 
            <tr> 
                <td>1235;lsdfm*</td>
                <td>bar-value</td> 
            </tr> 
        </table> 
        <table border=1> 
            <tr> 
                <th>bar</th> 
                <th>foo</th> 
            </tr> 
            <tr> 
                <td>bar-value</td> 
                <td>sdfgsdfrr</td> 
            </tr> 
        </table>
    </body>
</html>

我想 select 与 th 相关的 td 包含 "foo" 文本。换句话说,我想 select 具有值 "sdfgsdfrr" 和“1235;lsdfm*”的 td

到目前为止我尝试这个 css select 或兼容 Jsoup selector API:

table:has(th:matchesOwn(^foo$)) ??

DEMO

我认为即使使用 jsoup 目前提供的 selectors 也是不可能的。例如,您不能使用 :has() 来表达列或元素之间的位置关系。

Selectors 4 建议添加一些按列定位单元格元素的内容,包括截至 2015 年 1 月的 column combinator ||。但是,当前文本似乎表明 || 需要您的 table 有明确的 col 元素才能工作,所以这里也没有用。

用一个 selector 完成这一切可能运气不佳。或者,您可以 select th,确定其位置,然后使用此信息分别找到 td。您可能需要为每个 table 或每一列分别执行此操作。