webview jsoup解析html

原创 2016年06月01日 19:50:58
导包
package com.example.parsehtml;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.http.util.ByteArrayBuffer;
import org.apache.http.util.EncodingUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;

import tools.HttpUtils;
import tools.LoadImageUtils;
import tools.TouchImageView;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.text.Html.TagHandler;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.AbsoluteSizeSpan;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebView.HitTestResult;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class WebViewActivity2 extends Activity {
    Document doc;
    Map<String, String> map;
    ListView listView;
    String value;
    WebView webview;
    String v;
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //
            switch (msg.what) {
            case 1:
                // webview.loadData(value, "text/html; charset=UTF-8",
                // null);//这种写法可以正确解码
                setWebView();
                break;

            }
        }

    };

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview_html);
        webview = (WebView) findViewById(R.id.webView1);
        webview.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                HitTestResult hitTestResult = ((WebView) v).getHitTestResult();
                if (null == hitTestResult) {
                    System.out.println("非图片");
                    return false;
                }else{

                if (hitTestResult.getType() == HitTestResult.IMAGE_TYPE) {
                    try {
                        System.out.println("点击到了图片。。。。。。。。。。。。。");
                        showpopup(hitTestResult.getExtra().toString()); //图片URL
                    } catch (Exception e) {
                        e.printStackTrace();
                    }  
                }
                return false;
                }
            }

        });
        WebSettings webSetting = webview.getSettings();
        webSetting.setBuiltInZoomControls(true); // 设置显示缩放按钮
        webSetting.setSupportZoom(true); // 支持缩放

        webSetting.setDefaultTextEncodingName("utf-8");
        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread() {
                    public void run() {
                        load();
                    }
                }.start();
            }
        });

    }

    protected void load() {
        try {
            System.out.println("loading............");
            doc = Jsoup.parse(new URL(
                    "http://help.3g.163.com/15/1011/12/B5L87DGV00963VRO.html"),
                    5000);

            Element text = doc.getElementById("endText");
            value = text.html();
            v = value.replaceAll("<img [^>]*/>", ""); // [^>]*是匹配任意个非>方挂号的字符
                                                        // 过滤掉<img />标签用
            handler.sendEmptyMessage(1);
        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }

    /**
     * 将信息显示到WebView上
     */
    private void setWebView() {
        String htmlContent = "";
        try {
            InputStream in = getAssets().open("context.html");
            byte[] tmp = HttpUtils.readInputStream(in);
            htmlContent = new String(tmp);
            // checkParams(); // 最后校验属性,防止异常标签引发的异常
            webview.loadData(
                    htmlContent.replace("@title", "新闻标题可定义")
                            .replace("@source", "新闻来源")
                            .replace("@pubdate", "1911-5-10")
                            .replace("@content", value),
                    "text/html;charset=utf-8", null);
        } catch (Exception e) {
            handler.sendEmptyMessage(2); // 出现异常
            e.printStackTrace();
        }
    }

    /**
     * 做最后的校验,校验要被显示到UI上的某篇新闻具体内容的各属性是否为空
     */
    /*
     * private void checkParams() { this.title = (title == null ||
     * title.equals("")) ? "未知" : title; this.copyright = (copyright == null ||
     * copyright.equals("")) ? "未知" : copyright; this.sourse = (sourse == null
     * || sourse.equals("")) ? "未知" : sourse; this.pubDate = (pubDate == null ||
     * pubDate.equals("")) ? "未知" : pubDate; this.description = (description ==
     * null || description.equals("")) ? "未知" : description; }
     */
 
      public void showpopup(String url) throws Exception{
          
            TouchImageView img = new TouchImageView(this);
            img.setMaxZoom(4f);
            img.setScaleType(ScaleType.FIT_XY);
            LoadImageUtils.loadImageFromNet(url, img);
            final PopupWindow popupWindow = new PopupWindow(img,
                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, true);

           // popupWindow.setTouchable(false);

           // popupWindow.setOutsideTouchable(false);

            // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
            // 我觉得这里是API的一个bug
            ColorDrawable dw = new ColorDrawable(-00000);
            popupWindow.setBackgroundDrawable(dw);
            img.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    popupWindow.dismiss();
                }
            });
            // 设置好参数之后再show
            popupWindow.showAsDropDown(img);

        }

}

获取WebView加载HTML时网页中的内容 获取页面元素

main.xml如下: [html]      xmlns:tools="http://schemas.android.com/tools"      android:layout_wi...
  • wgrzhuaq
  • wgrzhuaq
  • 2013年08月13日 09:44
  • 13171

WebView使用解析(一)之基本用法

WebView基本用法加载在线URLvoid loadUrl(String url)这个函数主要加载url所对应的网页地址,或者用于调用网页中的指定的JS方法(调用js方法的用法,后面会讲),但有一点...

Webview解析html源码

webview加载网页的时候,如何获取html的源码,可以通过js来实现。 1:设置webview,js。 webView = (WebView) findViewById(R.id.wv); ...

Android webView加载html代码详解

转至:http://xwangly.iteye.com/blog/1846387 使用WebView加载HTML资源   最近的项目需要做一个如同微信中的腾讯...

jsoup解析html修改文件名

  • 2017年02月08日 14:14
  • 274KB
  • 下载

jsoup解析html

  • 2013年12月25日 10:34
  • 2KB
  • 下载

Android利用Jsoup解析html 开发网站客户端小记。

这些天业余时间比较多,闲来无事,想起了以前看过开发任意网站客户端的一篇文章,就是利用jsoup解析网站网页,通过标签获取想要的内容。好了废话不多说,用到的工具为 jsoup-1.7.2.jar包,具体...

jsoup解析html所需包1.7.3

  • 2015年01月07日 08:37
  • 856KB
  • 下载

使用Jsoup解析HTML数据的Demo

  • 2015年07月29日 21:31
  • 4.68MB
  • 下载

我的Android笔记(八)—— 使用Jsoup解析Html

想要做一个看新闻的应用,类似Cnbeta客户端的东西。大致思路如下:根据链接获取新闻列表页的html代码,然后解析,找到所有的新闻标题和新闻链接用listView显示,当点击ListView的Item...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:webview jsoup解析html
举报原因:
原因补充:

(最多只允许输入30个字)