Android WebView 读取 HTML 文件并提取所有 Div 标签内容
您可以使用Android的WebView来加载并解析HTML文件,然后使用JavaScript代码来获取并打印所有div标签的内容。以下是一个示例代码:
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebResourceResponse;
import android.webkit.WebViewClient;
import android.webkit.WebSettings;
import android.webkit.WebChromeClient;
import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 页面加载完成后执行JavaScript代码
view.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
});
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
// 加载html文件
webView.loadUrl("file:///android_asset/test.html");
}
class MyJavaScriptInterface {
@JavascriptInterface
@SuppressWarnings("unused")
public void processHTML(String html) {
// 解析HTML的div标签内容
// 这里可以使用正则表达式或者其他方法提取div标签的内容
// 这里只是简单地使用字符串截取的方式提取内容
int startIndex, endIndex;
String divStartTag = "<div";
String divEndTag = "</div>";
startIndex = html.indexOf(divStartTag);
while (startIndex != -1) {
endIndex = html.indexOf(divEndTag, startIndex);
if (endIndex != -1) {
String divContent = html.substring(startIndex, endIndex + divEndTag.length());
System.out.println(divContent);
}
startIndex = html.indexOf(divStartTag, endIndex);
}
}
}
}
上述代码中,我们创建了一个WebView并设置其WebSettings,使其可以执行JavaScript代码。然后,我们设置了WebViewClient的onPageFinished方法,在页面加载完成后执行JavaScript代码。JavaScript代码使用document.getElementsByTagName('html')[0].innerHTML获取整个HTML内容,并调用Java代码的processHTML方法传递HTML内容。Java代码通过字符串截取的方式提取所有div标签的内容,并打印输出。
请注意,上述代码中的test.html文件应该位于项目的assets目录下。您可以根据实际情况修改HTML文件的路径和文件名。
希望对您有帮助!
原文地址: https://www.cveoy.top/t/topic/pa48 著作权归作者所有。请勿转载和采集!