【问题标题】:JSOUP select all text following a closing tag until a specified tagJSOUP 选择结束标记之后的所有文本,直到指定标记
【发布时间】:2013-02-27 22:43:52
【问题描述】:

我在一个表格的许多表格行中有这个 html:

.........
<tr class="greycellodd" align="right">
<td align="left">
<input type="checkbox" name="cashInvestment" value="100468057"/>
</td>
<td align="left">Cardcash 
</td>
<td class="nobr">26 Aug 10</td>
<td class="nobr"> 1.00 
</td>
<td class="nobr"> 1.00 
</td>
<td align="right">£</td>
<td class="nobr">0.00 </td>
<td class="nobr">0.00 </td>
<td class="nobr">
<span class="changeupsmall">1.00 </span>
</td>
</tr>
<tr class="greycellodd">
<td align="right"/>
<td class="nobr" colspan="8">VISA</td>
</tr>
<tr class="greycelleven" align="right">
<td align="left">
<input type="checkbox" name="cashInvestment" value="100480214"/>
</td>
<td align="left">Santander
</td>
<td class="nobr">24 Sep 11</td>
<td class="nobr"> 1.00 
.......

我需要提取每个复选框标签之间的所有内容

<input type="checkbox" name="cashInvestment" ../> 

例子

元素 1:

Cardcash 
26 Aug 10
1.00 
1.00 
£
0.00
0.00
1.00
VISA

元素 2:

Santander
24 Sep 11
1.00 
.......

我试过了:

 Elements Inve = mainFirst.select("input ~ *" );

 Elements Inve = doc.select("input"); // gives me nothing as there is no text to the input tag (it has no child). 

我还需要获取复选框的值,我知道该怎么做,但如果可能的话,最好同时做:

Elements mainTables = doc.select("table.maintable");
for (Element subTable : mainTables){    
  Elements borrowInve = subTable.select("input[type=checkbox][name=cashInvestment]" );
  String attr = test.attr("value");
}

谢谢

编辑:通过检查大小解决:

    Elements td = tableRows.get(i).select("td");

            Elements cash = tableRows.get(i).getElementsByAttributeValue("name", attrValue); // check if checkbox is present
            int theSize = cash.size();

            if(theSize ==1){ // this row is not a comment 

                String checkbox = "";
                Element cbox = td.select("input[type=checkbox]" ).first();
                checkbox = cbox.attr("value");
             else if (theSize ==0){ // this row contains a comment
                                  .............

【问题讨论】:

    标签: html parsing text extract jsoup


    【解决方案1】:

    我从未在 JSOUP 中做过任何事情,但快速浏览一下文档,可能是这样的:

    Elements Inve = doc.select(".maintable tr td:not(:has(input))");
    

    虽然如果您可以为您想要定位的元素添加一个类可能会更容易。

    【讨论】:

    • 还没有。因此,您的代码为我每行文本提供一个元素,基本上每个 tr 一个元素没有复选框,即:1:Cardcash 2:26 Aug 10 等它没有检测到何时找到应该触发每个新元素的复选框
    • 好吧,如果你知道每个 tr 都有一个复选框,你可以做类似的事情(记住,我从来没有做过 JSOUP):Elements trElements = doc.select(".maintable tr"); 然后在 for (Element trElement : trElements) 循环中你会使用与我编写的代码类似的代码在当前行上进行选择,但将其缩小到当前 tr,再加上第二次选择以查找复选框值。
    • 我最终发现了这一点,当您指出我正确的方向时,将其标记为已回答(请参阅已编辑的问题)
    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多