2016-05-31 14 views
0

私はArrayListを有する:Javaでarraylistに特定のhtmlテーブル行の値を格納する方法は?

ArrayList<String> userNames = new ArrayList<String>(); 

Iは、異なる行のテーブルを持っているが、各列は、文字列としてのユーザ名の値を有します。すべての行の値を配列リストに保存したい。

テーブルのHTMLは次のとおりです。

<tbody> 
    <tr class="odd"> 
     <td> 
     <td class="left"> 
      <a href="saveSystemUser?userId=13">9090sdsd</a> 
     </td> 
     <td class="left">ESS</td> 
    </tr> 
    <tr class="even"> 
     <td> 
     <td class="left"> 
      <a href="saveSystemUser?userId=2">Abc123</a> 
     </td> 
     <td class="left">ESS</td> 
    </tr> 
    <tr class="odd"> 
     <td/> 
     <td class="left"> 
      <a href="saveSystemUser?userId=1">AdminOH</a> 
     </td> 
     <td class="left">Admin</td> 
</tr> 

私は、各trから<a href="">userName</a>のテキストを取得し、ArrayListのユーザ名で、それを保存したいです。

答えて

0

独自のHTMLパーサーを作成したいとします。 あなたのプログラムはHTMLコードを文字列として取得すると仮定します。

HTMLを解析する方法 "❬tr"や "❬/ tr"のように、指定された文字列のインデックスを見つける方法から始めます。

のようになります。これは、findMeの最初の文字が見つかるまで、indexで始まるparseMeで行進します。次にfindMeを実行し、各文字findMe.charAt(n)をparseMe.charAt(index + n)と照合し、一致する場合はindexを返します。

したがって、これを使用して、各❬a❭と一致する❬/a❭タグの場所を見つけることができます。各ペアについて、その場所がある場合は、parseMe.substring(beginIndex、endIndex)を使用してstringのそのセクションを取得し、それをarrayListに追加することができます。 これを行うには、それぞれの "❬a"を見つけて、次の "❭"を見つけ、href = "blablabla"ナンセンスを避けてください。そのインデックス(+ 1)をparseMe.substring()メソッドに渡される最初のintに格納します。次に、一致する "❬/a❭"が見つかります。 substring()の2番目のintとしてインデックス-1を格納します。 parseMe.substring(firstIndex、secondIndex)をarrayListに追加し、substring()を入力した2番目のintから開始して次の "❬a"に移動します。これにより、parseTo()は同じユーザーではなく次のユーザーを検索します何度も何度も繰り返します。

いくつかの可能性のある問題:

  1. 私はjavacのは(サブストリング認識)とのcharAt()、そうでない場合、インポートはjava.lang.Stringを入れますかなり確信しています。頂点で。

  2. parseMeに "❬a"部分文字列がなくなると、parseMeの長さを超えるまでparseTo()が停止せず、arrayOutOfBoundsExceptionが返されます。探しているユーザーの数を知っていれば問題はありませんが、そうでない場合は、anchorタグを数えてparseMeメソッドを実行してください。

関連する問題