【问题标题】:Hide HTML tags with Jsoup in Android在 Android 中使用 Jsoup 隐藏 HTML 标签
【发布时间】:2018-02-14 22:46:33
【问题描述】:

我正在使用 Android 应用程序。我只想从站点加载项目并隐藏一些标签(页眉、页脚、搜索面板)。为此,我使用了 Webview 和 Jsoup。一切正常。但是当我单击某个项目时,在新页面中将再次打开页眉/页脚。如何使用此代码隐藏页眉和页脚?

public class MainActivity extends AppCompatActivity {

WebView webview;
String url="http://hut.az/";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webview= (WebView) findViewById(R.id.webview);



    new MyAsynTask().execute();

}

private class MyAsynTask extends AsyncTask<Void, Void, Document> {
    @Override
    protected Document doInBackground(Void... voids) {

        Document document = null;

        try {
            document= Jsoup.connect(url).get();
            document.getElementsByClass("header1").remove();
            document.getElementsByClass("topbar clearfix").remove();
            document.getElementsByClass("mapandslider").remove();
            document.getElementsByClass("footer1").remove();
            document.getElementsByClass("copyright").remove();


        } catch (IOException e) {
            e.printStackTrace();
        }
   return document ;
    }

    @Override
    protected void onPostExecute(Document document) {
        super.onPostExecute(document);

        webview.loadDataWithBaseURL(url,document.toString(),"text/html","utf-8","");
        webview.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
        webview.setWebViewClient(new WebViewClient(){
            private WebView view;
            private WebResourceRequest request;

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                this.view = view;
                this.request = request;
                view.loadUrl(url);

                return super.shouldOverrideUrlLoading(view, request);
            }



        });

    }
}
}

打开应用时:

当我单击任何项​​目时,页眉和页脚会再次显示

【问题讨论】:

    标签: android parsing webview jsoup


    【解决方案1】:

    这是因为你在Webview打开了一个全新的页面,然后你还没有删除那个新页面中的标签,你要做的就是把你的代码改成

    public class MainActivity extends AppCompatActivity {
    
        WebView webview;
        String url="http://hut.az/";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            webview= (WebView) findViewById(R.id.webview);
            webview.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
            webview.setWebViewClient(new WebViewClient(){
    
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
                    new MyAsynTask().execute(url);
                    return super.shouldOverrideUrlLoading(view, url);
                }
    
            });
    
            new MyAsynTask().execute(this.url);
    
        }
    
        private class MyAsynTask extends AsyncTask<String, Void, Document> {
            @Override
            protected Document doInBackground(String... urls) {
    
                Document document = null;
                try {
    
                    document= Jsoup.connect(urls[0]).get();
                    document.getElementsByClass("header1").remove();
                    document.getElementsByClass("topbar clearfix").remove();
                    document.getElementsByClass("mapandslider").remove();
                    document.getElementsByClass("footer1").remove();
                    document.getElementsByClass("copyright").remove();
    
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return document;
            }
    
            @Override
            protected void onPostExecute(Document document) {
                super.onPostExecute(document);
                webview.loadDataWithBaseURL(url,document.toString(),"text/html","utf-8","");
    
            }
        }
    }
    

    【讨论】:

    • 谢谢兄弟,工作!)但是有一个问题。打开新页面时,标题在打开站点后隐藏。如何解决这个问题?
    • 那么你应该删除 document.getElementsByClass("header1").remove();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多