使用Jsoup解析Html == TextView顯示html圖片的方法
想要做一個看新聞的應用,類似Cnbeta客戶端的東西。大致思路如下:根據連結獲取新聞列表頁的html程式碼,然後解析,找到所有的新聞標題和新聞連結用listView顯示,當點選ListView的Item再載入相應的新聞內容。
其中獲取html程式碼,可以使用如下程式碼實現:
- public String getHtmlString(String urlString) {
- try {
- URL url = new URL(urlString);
- URLConnection ucon = url.openConnection();
- InputStream instr = ucon.getInputStream();
- BufferedInputStream bis = new BufferedInputStream(instr);
- ByteArrayBuffer baf = new ByteArrayBuffer(500);
- int current = 0;
- while ((current = bis.read()) != -1) {
- baf.append((byte) current);
- }
- return EncodingUtils.getString(baf.toByteArray(), "gbk");
- } catch (Exception e) {
- return "";
- }
- }
傳入一個網頁連結,將返回此連結的html程式碼(String)。
然後就是解析此html程式碼了。經過google,發現了java的一個很好用的解析html的庫,Jsoup:http://jsoup.org/
很容易使用,方法類似javascript和JQuery。只需先構建一個Jsoup的Document物件,然後就可以像使用js一個解析html了
- String htmlString = getHtmlString("http://www.cnbeta.com");
- Document document = Jsoup.parse(htmlString);
- String title = document.head().getElementsByTag("title").text();
另外構建Document的時候也可以直接使用URL,像這樣:
- Document doc = Jsoup.parse(new URL("http://www.cnbeta.com"), 5000);
有關Jsoup的下載和更多介紹,見其官網:http://jsoup.org/
我寫的一個demo,點選按鈕後會載入然後顯示cnbeta首頁的所有新聞標題和連結地址,下載:http://download.csdn.net/detail/barryhappy/4151450 ,zip包裡有jsoup的jar包,匯入專案後可能需要手動匯入此jar包。
執行效果圖——
===================================================================================
TextView是不只可以String的,我們平常用的給setText()方法傳遞String引數的時候,其實是呼叫的public final void setText (CharSequence text)方法,String類是CharSequence的子類。
而CharSequence子類眾多,其中有一個介面Spanned,即類似html的帶標記的文字。我們可以用它來在TextView中顯示html(自然,有很多html標記是不支援的,只支援一部分)。
Android.text.Html類的一個方法:
- public static Spanned fromHtml (String source)
- html = "<h1>this is h1</h1>"
- + "<p>This text is normal</p>"
- + "<img src='https://www.google.com.hk/intl/zh-CN/images/logo_cn.png' />";
- Spanned sp = Html.fromHtml(html);
- textView.setText(html);
顯示效果:
可以看出,字型效果基本是顯示出來了,但是圖片沒有顯示。
要實現圖片的顯示需要使用Html.fromHtml的另外一個重構方法:
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
其中Html.ImageGetter是一個介面,我們要實現此介面,在它的getDrawable(String source)方法中返回圖片的Drawable物件才可以。
修改後的程式碼:
- Spanned sp = Html.fromHtml(html, new Html.ImageGetter() {
- @Override
- public Drawable getDrawable(String source) {
- InputStream is = null;
- try {
- is = (InputStream) new URL(source).getContent();
- Drawable d = Drawable.createFromStream(is, "src");
- d.setBounds(0, 0, d.getIntrinsicWidth(),
- d.getIntrinsicHeight());
- is.close();
- return d;
- } catch (Exception e) {
- return null;
- }
- }
- }, null);
- textView.setText(sp);
其中
- is = (InputStream) new URL(source).getContent();
- Drawable d = Drawable.createFromStream(is, "src");
由於用到了網路資源的圖片,所以要在Mainifest檔案中加入許可權:
- <uses-permission android:name="android.permission.INTERNET" />
圖片正常顯示了。
我做的demo,下載地址:http://download.csdn.net/detail/barryhappy/4154342
相關文章
- Java中使用Jsoup解析HTML表格教程JavaJSHTML
- JAVA 解析html 型別字串(使用jsoup)JavaHTML型別字串JS
- 【Java】Jsoup 解析HTML報告JavaJSHTML
- Java爬蟲系列三:使用Jsoup解析HTMLJava爬蟲JSHTML
- html2canvas生成圖片顯示不全HTMLCanvas
- Java爬蟲利器HTML解析工具-JsoupJava爬蟲HTMLJS
- [網路爬蟲] Jsoup : HTML 解析工具爬蟲JSHTML
- 使用java的HTML解析器 jsoup來防止XSS攻擊JavaHTMLJS
- HTML img 元素無法顯示 base64 圖片的可能原因HTML
- 【HTML】04圖片HTML
- HTML特殊字元顯示HTML字元
- 使用 hide和 show方法來隱藏和顯示 HTML 元素IDEHTML
- HTML 連結和圖片HTML
- html背景圖的使用HTML
- html input type=file 選擇圖片,圖片預覽 純html js實現圖片預覽HTMLJS
- 【HTML】HTML自定義網頁頭部小圖示HTML網頁
- AverageTextView——均勻顯示的TextViewTextView
- 本地HTML中圖片下載HTML
- Elements皮膚顯示HTML註釋HTML
- bc搭建資料夾顯示特殊html字元處理方法HTML字元
- html2canvas:將html的dom變成圖片,並儲存HTMLCanvas
- uni-app 中使用 html2canvas 生成圖片APPHTMLCanvas
- html+css 設定背景圖片HTMLCSS
- win10系統設定資料夾顯示圖片解析度的方法Win10
- ASP.NET MVC下使用AngularJs語言(八):顯示htmlASP.NETMVCAngularJSHTML
- 正規表示式匹配html中的圖片HTML
- HTML中嵌入SVG圖片的N種方式HTMLSVG
- CSS圖片的灰色顯示效果CSS
- 使用 HTML 實現截圖-html2canvas使用記錄HTMLCanvas
- 用HTML5繪製圖形在手機上消除模糊顯示HTML
- html2canvas 如何生成高清圖片HTMLCanvas
- 使用 HTML5 Canvas 實現使用者自定義裁剪圖片HTMLCanvas
- SAP CRM WebClient UI html 格式的 Text 顯示邏輯WebclientUIHTML
- Golang pprof 結果使用 graphviz 圖片化顯示Golang
- Hybris Storefront裡產品圖片顯示不出來的分析方法
- 解析-HTML 解析器HTML
- html中引入另一個html的方法HTML
- 使用jpeg圖片庫,顯示圖片並簡單實現LCD的觸屏功能
- 爬蟲-使用lxml解析html資料爬蟲XMLHTML