正巧做到這了 進行一下學習
最近有些朋友問在andoroid怎樣解析html文件,webview是一個非常好的選擇,如果只想解析出其中的部分數據,而且沒有服務器端代碼的情況下使用jsoup解析是一個非常好的選擇因爲其有強大的選擇器。例如解析如下
該網站的通過查看頁面原代碼如下:
.......
<table width="100%" border="0" cellpadding="5" cellspacing="0">
<td>
<h2>Online Staff Directory</h2>
</td>
</tr>
<tr>
<td colspan="2"><img src="http://www.tp.edu.sg/spacer.gif" width="1" height="5"></td>
</tr>
<tr>
<td>
<form action="findstf.asp?div=All&from=" method="post">
Staff Search: <input type="text" size="21" maxlength="30" name="name"> <input
type="submit" value="Submit">
</form>
<hr NOSHADE size="1" width="99%"><p>
<P><a href="mdeptlist.asp?dept=BUS&from="><< Another Division</a></P>
<p align="center" class="H1"><font color="#990000">BUS Admin/General Office </font></p>
<table border="0" cellpadding ="0" width="99%" cellspacing="0">
<tr>
<th align="left" width="10%">Dept/Sch</p></th>
<th align="left" width="5%"> </p></th>
<th align="left" width="42%">Name/Designation</p></th>
<th align="left" width="8%">Telephone</p></th>
</tr>
<tr bgcolor=#ECECEC>
<td width="10%" valign="top" align="left"> </td>
<td width="5%" valign="top" align="left"> </td>
<td width="42%" valign="top" align="left">
<a href="mailto:[email protected]">Heng Seng Huat, Edward </a>
</td>
<TD width="8%" valign="top" align="left">67805056</td>
</TR>
<tr bgcolor=#ECECEC>
<td width="10%" valign="top" style="padding-left:8px;" align="left">BUS/A </td>
<td width="5%" valign="top" align="left"> </td>
<td width="42%" valign="top" align="left">
Section Head</td>
<TD width="8%" valign="top" align="left"> </td>
</TR>
<tr bgcolor=#ECECEC>
<td width="10%" valign="top" align="left"> </td>
<td width="5%" valign="top" align="left"> </td>
<td width="42%" valign="top" align="left"> </td>
<TD width="8%" valign="top" align="left"> </td>
</TR>
.......
在android中只想獲取其中的名字和電話,那麼解析方法如下:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements
......
Document doc = Jsoup.connect("http://www-app.tp.edu.sg/scripts/staffdir/Emplist.asp?step=1&div=BUS/AF&from=").get();
Elements links = doc.select("a[href]");
Elements tds = doc.select("td[width=8%]");
......
因爲名字是有超鏈接,故可以通過jsoup的選擇器a[hred]獲取所有的超鏈接內容,而後進行篩選即可獲取名字;電話也是如此因爲在源代碼中得知電話的td標籤width=8%這樣的屬性標識電話,可以通過選擇器進行獲取。
Jsoup提供了強大的選擇器,如
但是這樣做的話給客戶端太大的壓力,最好的方式還是在服務器端將數據渲染成xml或者json來做,這樣客戶端解析起來比較快捷,效率高。