从包含文本的父级获取NodeList

时间:2014-07-11 05:55:24

标签: java xml xpath jtidy

我想从父节点获取所有子节点,其中包含其中一个文本。换句话说:我开始搜索某个子节点,我确定包含了我需要的一些字符串。一旦我找到了它,而不是从匹配相同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&oacute;n</b></td>
                  <td width="55" class="back1"><b class="texto4">Cr&eacute;ditos</b></td>
                  <td width="156" class="back1"><b class="texto4">T&iacute;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.INDUSTRY,100,100,0)。 这可能与Jtidy一起吗?任何提示或建议?感谢。

1 个答案:

答案 0 :(得分:1)

你可能想要这个:

XPathExpression expr = 
     xpath.compile("//tr[td[normalize-space(font) = 'IIND1000']]/td/font/text()"); 

括号中的条件检查是否存在具有所需条件的孙子节点,并且仅输出匹配的<tr>的所有孙子节点。