由於業務需要,有時會需要讀取一個html模板。
有這麼一個需求:需要讀取html文件的“body”內容,但是不想要這個body裏面的某一個<h2> 元素,如果用正則表達式來進行匹配的話,會非常消耗性能。可以考慮使用這個方法
<!doctype html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>helloWorld--zxk</title>
<meta name='description' content=''>
</head>
<body>
<h2 class="rich_media_title" id="activity-name">
<!-- 設置標題 -->
#titleName#
</h2>
<div>
</div>
<h2>1111</h2>
</body>
</html>
下面是Java代碼
public static String readTxtFileBodyDoc(String filePath) {
StringBuilder sb = new StringBuilder();
try {
String encoding = "UTF-8";
//讀取本地的html文件方法
File file = new File(filePath);
if (file.isFile() && file.exists()) { // 判斷文件是否存在
// 進行body元素提取
Document document = null;
document = Jsoup.parse(file, encoding);
Element e = document.body();
Element e1 = e.getElementById("activity-name");
//排除 某一個<h2>元素
e1.remove();
String eStr = String.valueOf(e);
sb.append(eStr);
}
if (StringUtils.isEmpty(sb)) {
//讀取線上的html文件地址
try {
Document doc = Jsoup.connect(filePath).get();
Element e = doc.body();
Element e1 = e.getElementById("activity-name");
e1.remove();
String eStr = String.valueOf(e);
sb.append(eStr);
} catch (Exception e) {
}
}
} catch (Exception e) {
e.printStackTrace();
}
String bodyCont = sb.toString();
return bodyCont;
}