正巧做到这了 进行一下学习
最近有些朋友问在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:senghuat@tp.edu.sg">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来做,这样客户端解析起来比较快捷,效率高。