본문 바로가기

프로그래밍/API

javax.swing의 HTMLEditorKit를 사용한 HTML 파싱~

Java로 HTML를 파싱해야 할때가 가끔 존재한다. 이럴때 사용하면 유용한 소스를 소개한다.
해당 소스는 SWING에 포함되어 있으며, 여타 공개된 파서 이상의 기능을 제공한다.

    final StringBuffer plain = new StringBuffer();

    HTMLEditorKit.Parser parser;
   
    parser = new ParserDelegator();
    try {
     parser.parse( new StringReader( stringData), new HTMLEditorKit.ParserCallback() {
      public void handleText(char[] data, int pos) {
        // Text가 존재할때 호출된다.
        plain.append( data);
        plain.append( ' ');
      }
     
      public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
          // Tag가 시작될떄 호출된다. 예) <A ...>
      }
     
      public void handleEndTag(HTML.Tag t, int pos) {
         // Tag가 끝날때 호출된다. 예) </A>
      }
     
      public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) {
         // 단일 테그 형태일때 호출된다. <BR/> 같은 테그에서..
      }
     
      public void handleComment(char[] data, int pos) { /* NULL */ }
      public void handleError(String errorMsg, int pos) { /* NULL */}  
     }, true);
    } catch (IOException e) { e.printStackTrace(); }


필자도 여러개의 파서를 사용해 봤지만 가장 마음에 드는 파서이다.

참고로, 해당 파서는 HTML 3.2 포맷을 기준으로 처리한다. 그래서 가끔 파싱 못하는 테그도 존재한다.

이럴 경우...