IT_Programming/Java

java HTML Parsing & ParserCallback

JJun ™ 2008. 8. 20. 08:27

 

import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTML;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.HttpURLConnection;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.parser.ParserDelegator;


public class HTMLParsing {
private static FileWriter writer;
        //파서는 콜백 형식으로 되어 있다. 각 태그가 들어 올때 적절한 메소드가 호출됨
        private class CallbackHandler extends HTMLEditorKit.ParserCallback {
              
                //태그가 시작할 때 호출 되는 메소드
                public void handleStartTag(HTML.Tag tag, MutableAttributeSet a, int pos) {
                      
                        //<A href 인 경우...  A태그를 찾는다...
                        if (tag == HTML.Tag.A) {
                                System.out.println(a.getAttribute(javax.swing.text.html.HTML.Attribute.HREF));
                        }                                       
                }
              
                //텍스트가 들어올때 호출되는 메소드
                public void handleText(char[] data, int pos) {
                        System.out.println(data);
                        try {
                         //텍스트만 파일에 저장합니다.
       writer.write(data);
      
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }

                }
        }

 
      
        public void parse(String str) {
                String content = null;
              
                try {
              
                //입력받은 URL에 연결하여 InputStream을 통해 읽은 후 파싱 한다.
//                URL url = new URL(str);
//               
//                HttpURLConnection con = (HttpURLConnection)url.openConnection();
//               
//                InputStreamReader reader = new InputStreamReader(con.getInputStream(),"euc-kr");
 
                InputStreamReader reader = new InputStreamReader(new FileInputStream(new File(str)),"euc-kr");

                new ParserDelegator().parse(reader, new CallbackHandler(), true);
//               
//                con.disconnect();
                }
                catch(Exception e) {
                        e.printStackTrace();
                }
        }
      
        public static void main(String[] args) throws IOException {
             //저장파일 만들고
                writer = new FileWriter("c:/temp/output.txt");
              
                HTMLParsing parser = new HTMLParsing();
                parser.parse("c:/temp/aa.txt");
                //파일닫는다.
                writer.close();
        }

'IT_Programming > Java' 카테고리의 다른 글

JPopupMenu Example   (0) 2008.08.20
image view (이미지 여러 방향으로 뒤집기)  (0) 2008.08.20
다중파일 전송   (0) 2008.08.20
자바 그림 불러오기   (0) 2008.08.20
DefaultTreeCellRenderer test   (0) 2008.08.20