1
對於以下HTML:Jsoup選擇語法工作不正常
<table>
<tbody>
<tr valign="TOP">
<td align="LEFT"><b>Licensee Name:</b></td>
<td align="LEFT">Some-last-name Some-first-name</td>
</tr>
<tr valign="TOP">
<td align="LEFT"><b>License Type:</b></td>
<td align="LEFT">Optometrist (OPT)</td>
</tr>
.
.
.
</tbody>
</table>
下面的代碼生成元素的空集:
Elements rows = docOptometristDetail.select("body > table ~ tr");
但此代碼的工作:
tables = docOptometristDetail.select("body > table");
Elements rows = tables.select("tr");
我期待波代碼操作符:
table ~ tr
找到<table>
元素,跳過<tbody>
元素並構建<tr>
元素的集合。
我在Jsoup的選擇器語法分析器中發現了一個弱點,還是我試圖違反一些運算符優先規則?我試過(body > table) ~ tr
但是拋出了SelectorParseException
。
有沒有辦法用單個選擇器表達式來做這個選擇(即得到一個Elements
元素的集合)?
這是行不通的!謝謝。如果桌子在體內,你可以通過「body> table」進入桌子。因此,如果行在表格內,爲什麼不使用「table> tr」(我曾嘗試過,沒有成功)? – mbmast
@mbmast這是因爲'>'會選擇* direct *子元素,而一個空格會選擇所有的子元素。 'tr'元素不是'table'元素的直接子元素,但是它們是子元素。參見:http://stackoverflow.com/questions/3225891/what-does-the-greater-than-sign-css-selector-mean –