91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用java實現讀取html文件中的body標簽和內容

發布時間:2020-11-09 15:31:58 來源:億速云 閱讀:1504 作者:Leah 欄目:開發技術

利用java實現讀取html文件中的body標簽和內容?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

這里的獲取的是html文件中body中的所有標簽以及內容

package com.lmt.service.file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;

import org.springframework.stereotype.Component;
import com.lmt.config.UrlConstants;

@Component
public class ParseFile {

  /**
   * 解析html文件
   * @param file
   * @return
   */
  public String readHtml(File file){
    String body = "";
    try {
      FileInputStream iStream = new FileInputStream(file);
      Reader reader = new InputStreamReader(iStream);
      BufferedReader htmlReader = new BufferedReader(reader);
            
      String line;
      boolean found = false;
      while (!found && (line = htmlReader.readLine()) != null) {
        if (line.toLowerCase().indexOf("<body") != -1) { // 在<body>的前面可能存在空格
          found = true;
        }
      }
      
      found = false;
      while (!found && (line = htmlReader.readLine()) != null) {
        if (line.toLowerCase().indexOf("</body") != -1) {
          found = true;
        } else {
          // 如果存在圖片,則將相對路徑轉換為絕對路徑
          String lowerCaseLine = line.toLowerCase();
          if (lowerCaseLine.contains("src")) {
            
            //這里是定義圖片的訪問路徑
            String directory = "D:/test";
            // 如果路徑名不以反斜杠結尾,則手動添加反斜杠
            /*if (!directory.endsWith("\\")) {
              directory = directory + "\\";
            }*/
          //  line = line.substring(0, lowerCaseLine.indexOf("src") + 5) + directory + line.substring(lowerCaseLine.indexOf("src") + 5);
            /*String filename = extractFilename(line);
            line = line.substring(0, lowerCaseLine.indexOf("src") + 5) + directory + filename + line.substring(line.indexOf(filename) + filename.length());
          */
            // 如果該行存在多個<img>元素,則分行進行替代
            String[] splitLines = line.split("<img\\s+"); // <img后帶一個或多個空格
            // 因為java中引用的問題不能使用for each
            for (int i = 0; i < splitLines.length; i++) {
              if (splitLines[i].toLowerCase().startsWith("src")) {
                splitLines[i] = splitLines[i].substring(0, splitLines[i].toLowerCase().indexOf("src") + 5)
                    + directory
                    + splitLines[i].substring(splitLines[i].toLowerCase().indexOf("src") + 5);
              }
            }
            
            // 最后進行拼接
            line = "";
            for (int i = 0; i < splitLines.length - 1; i++) { // 循環次數要-1,因為最后一個字符串后不需要添加<img
              line = line + splitLines[i] + "<img ";
            }
            line = line + splitLines[splitLines.length - 1];
          }
          
          body = body + line + "\n";
        }
      }
      htmlReader.close();
  //    System.out.println(body);
      
    } catch (Exception e) {
      e.printStackTrace();
    }
    return body;
  }
  
  /**
   * 
   * @param htmlLine 一行html片段,包含<img>元素
   * @return 文件名
   */
  public static String extractFilename(String htmlLine) {
    int srcIndex = htmlLine.toLowerCase().indexOf("src=");
    if (srcIndex == -1) { // 圖片不存在,返回空字符串
      return "";
    } else {
      String htmlSrc = htmlLine.substring(srcIndex + 4);
      char splitChar = '\"'; // 默認為雙引號,但也有可能為單引號
      if (htmlSrc.charAt(0) == '\'') {
        splitChar = '\'';
      } 
      String[] firstSplit = htmlSrc.split(String.valueOf(splitChar));
      String path = firstSplit[1]; // 第0位為空字符串
      String[] secondSplit = path.split("[/\\\\]"); // 匹配正斜杠或反斜杠
      return secondSplit[secondSplit.length - 1];
    }
  }
  
}

補充知識:StandardEngine[Catalina].StandardHost[localhost].StandardContext[]

jar包沒有正確導入

1、在 build path 中添加

利用java實現讀取html文件中的body標簽和內容

2、如果這里不添加在編譯的時你的jar包將不會被導入

利用java實現讀取html文件中的body標簽和內容

3、如果依然沒有成功請刪除user jar包重新導入

關于利用java實現讀取html文件中的body標簽和內容問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青阳县| 刚察县| 称多县| 兴义市| 驻马店市| 柞水县| 武威市| 布尔津县| 沙田区| 湟源县| 华安县| 新巴尔虎右旗| 天全县| 卢氏县| 阳泉市| 萨迦县| 海阳市| 天津市| 武宣县| 澄迈县| 临澧县| 南和县| 金湖县| 苍山县| 宜都市| 名山县| 刚察县| 河间市| 达拉特旗| 芜湖市| 莱州市| 应城市| 罗源县| 阳原县| 柳江县| 开封市| 定兴县| 鲁山县| 澎湖县| 定陶县| 靖远县|