2016-05-31 62 views
0

我的ArrayList:如何將特定的html表格行值存儲到java中的arraylist?

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

我有不同行的表,每一行有一個字符串的用戶名的值。我想將所有行的值存儲到我的數組列表中。表

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>文本,並將其存放在數組列表中的用戶名。

回答

0

假設您想編寫自己的HTML解析器。 我假設你的程序以字符串形式獲取HTML代碼。

如何解析HTML: 首先編寫一個方法來查找給定字符串的索引,如 「❬tr」或「❬/ tr」。它看起來像

private int parseTo(String findMe, String parseMe, int index) 

它將穿過parseMe,從索引開始,直到它找到findMe的第一個字母。然後它通過findMe進行遊行,檢查每個字母findMe.charAt(n)和parseMe.charAt(index + n),如果它們全部匹配,則返回索引。

所以你可以使用它來找到每個❬a❭的位置和匹配❬/a❭標籤。對於每一對,當你有它們的位置時,可以使用parseMe.substring(beginIndex,endIndex)來獲取該字符串的部分,然後將其添加到arrayList。 要做到這一點,找到每個「❬a」,然後找到下面的「❭」,以避開href =「blablabla」廢話。將該索引+ 1存儲爲您的parseMe.substring()方法的第一個int。然後你找到匹配的「❬/a❭」。將index - 1存儲爲substring()的第二個int。將parseMe.substring(firstIndex,secondIndex)添加到arrayList中,並從第二個int substring()開始,繼續前進到下一個「❬a」,這樣parseTo()將找到下一個用戶,而不僅僅是相同的一遍又一遍。

一些可能出現的問題:

  1. 我敢肯定的javac會認識到子串()和的charAt(),但如果沒有,把進口java.lang.String中;在頂部。

  2. 如果parseMe中沒有更多「❬a」子字符串,parseTo()將不會停止,直到它超過parseMe的長度,然後您將得到一個arrayOutOfBoundsException。如果知道有多少用戶需要查找,這應該不會成爲問題,但如果您不知道,請通過parseMe計算錨標籤來進行方法。

相關問題