TagFilter

|

package filter;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.channels.FileChannel;
import java.util.StringTokenizer;
import java.util.Vector;

public class TagFilter {
 private final String fileName = "tmp.html";
 private String usedCharset = "UTF-8"; // default charset : UTF-8
 
 public TagFilter(String charset){
  usedCharset = charset;
 }
 
 public String[] split(String target, String token){
  StringTokenizer st = new StringTokenizer(target, token);
  String[] ret = new String[st.countTokens()];
  String split = null;
  
  int i = 0;  
  while(st.hasMoreElements()){
   split = st.nextToken();
   if(split!=null && !split.equals("")){
    if(token=="<"){    
     ret[i] = token + split;    
     i++;
    }else if(token==">"){
     if(split.contains("<")){
      ret[i] = split + token;     
      i++;
     }else{
      ret[i] = split;     
      i++;
     }
    }else {
     ret[i] = split;    
     i++;
    } 
   }
  }
  
  return ret;
 }
 
 // html코드 중에 tag을 걸려 낸다.
 public String tagFilter(String str){  
  String preTag[] = null;  
  String result = null;
  Vector<String[]> strSplit  = new Vector<String[]>();
    
  preTag = split(str, "<");  
  for(int i=0; i<preTag.length; i++){
   String[] split = split(preTag[i], ">");
   strSplit.add(split);
  }
  
  int flag = 0; // 첫번째 문장
  for(int i=0; i<strSplit.size(); i++) {
   String[] ret = strSplit.get(i);   
   for(int j=0; j<ret.length; j++){
    if((!ret[j].contains("<"))
       &&((ret[j]!=" "))
       &&((ret[j]!=null))
       &&(!(ret[j].equals(null)))
       &&(!(ret[j].equals(" ")))
       &&(!ret[j].contains(">"))){ 
     if(flag==0){
       result = ret[j] + "\n";
       flag++;
     }else{
      result += ret[j] + "\n";
     }
     }
   }   
  }
    
  result = result.replace(" ", "").replace("\t", "");  
  
//  System.out.println(result);
  
  return result;
 }
 
 // html 파일 중에서 text만 가져 와서 String을 리턴.
 public String parserStr(){
  FileInputStream fis = null;  
  BufferedReader br = null;
  FileChannel channel = null;  
  String ret = null;
  
  try {   
   fis = new FileInputStream(fileName);
   br = new BufferedReader(new InputStreamReader(fis, usedCharset));   
      
         String data = null;      
         while((data=br.readLine())!=null){ //블록 시작전까지는 같은 지역으로 인식 i값을 주지 않아도 초기화에러가 나지 않는다.
          ret = tagFilter(data);
         }       
        
   fis.close();      
  } catch(IOException ex) {
   System.out.println("입출력 예외: " + ex.getMessage());
  } finally {
   if (channel != null){
       try {
        channel.close();
       }
       catch(IOException ex){}
   }
  }
  return ret;
 }
}

'JAVA/JSP > Source' 카테고리의 다른 글

메일(첨부자료 3개) 보내기  (0) 2009.01.29
PageReader  (0) 2009.01.16
Morphemer  (0) 2009.01.16
html tag filter(2)  (0) 2009.01.12
html tag filter  (0) 2009.01.09
And