0

jsoupを使用して、直接2つの「td」タグを持つ「tr」タグを抽出するにはどうすればよいですか。

サンプルhtml

<table>
  <tr> <!-- I don't want to extract this tr -->
    <td> 
      <table>
        <tr><td>extract</td><td>extract</td></tr> <!-- I want extact this tr -->
        <tr><td>extract</td><td>extract</td></tr> <!-- I want extact this tr -->
      </table>      
    </td>
  </tr>
</table>

このクエリを使用して抽出しようとしました。しかし、私は3つのtrタグを持っていました。

doc.select("tr:has(td:eq(1))")
4

2 に答える 2

2

次のクエリを試しましたdoc.select("tr tr")か?

このクエリは、コメントしたすべてのテーブル行を選択する必要があります。

于 2012-06-10T09:37:54.557 に答える
1

// これがあなたの助けになることを願っています.....あなたは次のような出力を見ることができます: abcd /nefgh は、内部テーブルの td タグに格納されています。

       String input = "<table><tr><td >TD1</td><td>td1</td> <td ><table><tr><td >a</td><td>b</td> <td >c</td><td>d</td></tr><tr><td>e</td><td>f</td><td >g</td><td>h</td></tr></table></td><td>td1</td></tr><tr><td>TD2</td><td>tD2</td><td >Td2</td><td>td2</td></tr></table>";

     Document doc = Jsoup.parse(input);

    Elements tables = doc.select("table tr td:has(table)");

    for (Element table : tables) {

        Elements trs = table.select("tr");

        String[][] trtd = new String[trs.size()][];

        for (int a = 0; a < trs.size(); a++) {

            Elements tds = trs.get(a).select("td");

            trtd[a] = new String[tds.size()];

            for (int b = 0; b < tds.size(); b++) {

                trtd[a][b] = tds.get(b).text(); 

              System.out.print( trtd[a][b] +"    ");

            }
          System.out.println( );
        }

        // trtd now contains the desired array for this table
    }
}

}

于 2014-06-03T03:59:59.467 に答える