【发布时间】:2014-07-11 05:55:23
【问题描述】:
我想从一个父节点中获取所有子节点,该父节点在其中一个节点中包含特定文本。换句话说:我在某个子节点上开始搜索,我确定该子节点包含我需要的一些字符串。找到它后,我不需要从与相同 Xpath 表达式匹配的节点中获取所有其他字符串,而是需要在同一级别上获取其他节点。我正在使用 Java。 例如:
<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>
如果我查找 IIND1000,我想获取该 tr 标签中的每个 td 元素(10110,IIND1000, 1, 3, INTROD.INGEN. INDUSTRIAL, 100, 100, 0)。 这可能与 Jtidy 吗?有什么提示或建议吗?谢谢。
【问题讨论】:
-
你能添加你尝试过的代码和一个示例xml吗?
-
对不起。我刚刚用获得的 HTML 文档的示例更新了问题。到目前为止,我已经尝试了这段代码:
XPath xpath = XPathFactory.newInstance().newXPath(); XPathExpression expr = xpath.compile("//td[@width='39']/font/text()"); NodeList crn = (NodeList)expr.evaluate(doc, XPathConstants.NODESET);这将获取该表中宽度为 39 的每个节点的文本。我需要的是让所有节点处于找到文本的同一级别(其中文本等于用户输入的内容)。 -
请同时将您的代码尝试添加到您的问题中,不要将它们作为评论。