private void initView() {
WebView mWebView = findViewById(R.id.webview);
mWebView.loadUrl("file:///android_asset/book/GUID-0B7E066B-D444-4C7C-918F-339F9D7B5319.html");
WebSettings mSetting = mWebView.getSettings();
mSetting.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new InJavaScriptLocalObj(), "java_obj");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:window.java_obj.getSource(document.documentElement.outerHTML);void(0)");
super.onPageFinished(view, url);
}
});
}
getSource中解析
public final class InJavaScriptLocalObj {
@JavascriptInterface
public void getSource(String html) {
String regFormat = "\\s*|\t|\r|\n";
String regTag = "<[^>]*>";
speechText = html.replaceAll(regFormat,"").replaceAll(regTag,"");
speechText = speechText.substring(speechText.indexOf("}") + 1);
speechText = speechText.substring(speechText.indexOf("}") + 1);
Document doc = Jsoup.parseBodyFragment(html);
String title = doc.select("title").text();
speechText = speechText.replaceFirst(title,"");
Elements imgs = doc.getElementsByClass("guid-img");
if (imgs != null && !imgs.isEmpty()) {
for(int i = 0;i < imgs.size();i++){
String image = imgs.get(i).text();
Log.i("YYYY","delete pic name " + image);
speechText = speechText.replaceAll(image,"");
}
}
String table = doc.select("table").text();
table = table.replaceAll(" ","");
speechText = speechText.replaceAll(table,"");
Log.i("YYYY","final text = " + speechText);
}
}
通过jsoup提取标签,需要在app的build.gradle中添加:
implementation 'org.jsoup:jsoup:1.9.2'