まず、HTML が間違っています。
XHTML のフォーマットを修正したら、ドキュメント ツリーをたどることができます。
XPATH
h3 を持つ任意の td を持つ任意のテーブル。
//table//td/h3
戻ります
<h3>The list</h3>
番号について
//table//tr[2]/td[1] <-- any table, the second tr element in this table, the first td in that second tr
戻ります
<td>Number</td>
したがって、ドキュメントに複数のテーブルを追加し、任意のテーブルの各要素に対して複数の結果を見つけたい場合、これは非常に簡単です。'root' 要素などの親要素内に多くのテーブルを含む XHTML ドキュメントがあるとします。
<root>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>123</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>456</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>789</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
</root>
次の XPATH 式を使用して、すべてのテーブルの各 2 行目の最初のテーブル データの数を抽出できます。
//table/tr[2]/td[1]
これにより、次の結果が得られます
<td>123</td>
-----------------------
<td>456</td>
-----------------------
<td>789</td>
ここで、いくつかのテーブルがあるとしますが、1 つのテーブルだけが非常に重要であり、テーブルには H3 要素が必要であり、他の要素は重要ではありません。このテーブルに H3 要素がある場合、2 番目の行を抽出したいとします。最初のTD。
<root>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h4>Ignore me!</h4>
</td>
</tr>
<tr>
<td>1164961564896</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h1>I'm not interesting</h1>
</td>
</tr>
<tr>
<td>456456466465</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>IM THE IMPORTANT TABLE!</h3>
</td>
</tr>
<tr>
<td>123456789</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
</root>
H3 要素の検出に成功した場合は、ツリーを遡ってトラバースし、次の tr に進むことでこれを達成できます。
//table//h3/../../../tr/td[1]
戻ります
<td colspan="4">
<h3>IM THE IMPORTANT TABLE!</h3>
</td>
-----------------------
<td>123456789</td>