XPathの難しさで、誰かがすぐに正しい方向に向けることを願っています。XPathでHTMLテーブルを解析する特定のテキストのセルを見つける
現在、私は自分のHTMLソースに必要な正しいテーブルを特定していますが、DOMのどこかにテキスト「チャプター」がある行だけを処理する必要があります。
私の最後の試みは、これを実行することでした。
// get the correct table
HtmlTable table = page.getFirstByXPath("//table[2]");
// now the failing bit....
def rows = table.getByXPath("*/td[contains(text(),'Chapter')]")
私は「私のどこかにそのDOM内のテキストが含まれている「TD」の次の子要素を持っているすべての要素を取得し、上記のXPathが表すだろうと思いました章」
私のソースからマッチする行の例は次のとおりです。
<tr valign="top">
<td nowrap="" align="Right">
<font face="Verdana">
<a href="index.cfm?a=1">Chapter 1</a>
</font>
</td>
<td class="ChapterT">
<font face="Verdana">DEFINITIONS</font>
</td>
<td> </td>
</tr>
すべてのヘルプ/ポインタは大歓迎します。
おかげで、
動作するようです。何が '。' ?また、私はなぜ「reletive」検出が機能していないのか理解していません。あなたは//私はルートで始まることを理解している? – Dave
@Dave、よろしくお願いします。 '.'と' // 'はXPathの短縮形です。 '.'はコンテキストノードを選択します。 '// td'はドキュメントルートのすべての' td'子孫を選択し、コンテキストノードと同じドキュメント内のすべての 'td'要素を選択します。 *リファレンス*:http://www.w3.org/TR/xpath/#path-abbrev –