【发布时间】:2014-09-05 03:38:47
【问题描述】:
在这个表达上需要帮助
"//tr[td[normalize-space(font) = '"+params[1]+"']]/td/font/text()"
我正在尝试从这个 HTML 文档中获取信息
<table width="575" border="0" cellspacing="1" cellpadding="0">
<tr>
<td width="39" class="back1"><b class="texto4">CRN</b></td>
<td width="60" class="back1"><b class="texto4">Materia</b></td>
<td width="53" class="back1"><b class="texto4">Sección</b></td>
<td width="55" class="back1"><b class="texto4">Créditos</b></td>
<td width="156" class="back1"><b class="texto4">Título</b></td>
<td width="69" class="back1"><b class="texto4">Cupo</b></td>
<td width="57" class="back1"><b class="texto4">Inscritos</b></td>
<td width="77" class="back1"><b class="texto4">Disponible</b></td>
</tr>
<tr>
<td width="39"><font class="texto4">
10110 </font></td>
<td width="60"><font class="texto4">
IIND1000 </font></td>
<td width="53"><font class="texto4">
<div align="center">
1 </div></font></td>
<td width="55"><font class="texto4">
<div align="center">
3 </div>
</font></td>
<td width="156"><font class="texto4">
INTROD. INGEN. INDUSTRIAL </font></td>
<td width="69"><font class="texto4">
100 </font></td>
<td width="57"><font class="texto4">
100 </font></td>
<td width="77"><font class="texto4">
0 </font></td>
</tr>
</table>
如果我查找 params1=10110,我想获取该 tr 标签中的每个 td 元素 (10110,IIND1000, 1, 3, INTROD.INGEN. INDUSTRIAL, 100, 100, 0)。
Jtidy 并没有真正做好这项工作 (it was having trouble with the spaces between font and div),所以我决定改用 Jsoup。有人会碰巧知道如何在一开始就转换那个 Xpath 表达式以便在 Jsoup 中使用它吗?
到目前为止,我已经设法得到这个表达式:font.texto4:contains(10110),它只得到“10110”。但是,我还没有找到一种方法来从同一级别的每个子节点获取文本。
EDTI:我是 Jsoup 的菜鸟,但我正在尝试更多的表达方式并检查结果。我发现如果我尝试这个表达式tr>td:contains(10110) font.texto4,我会得到表中每个元素的文本。我只是想把它缩小到同一级别的 tr 节点集。
【问题讨论】:
标签: java xpath html-parsing jsoup