2011-07-02 1 views
1

그래서 저는 뭘 하려는지 꽤 간단합니다. 스크립트 태그에 대해 HTML 문서를 파싱하고, ParserDelegator를 사용하고, ParserCallback을 사용하여 스크립트 태그를 추출합니다. 그러나이 프로그램을 실행할 때 아무 것도하지 않습니다. 콜백은 호출되지 않습니다. 내 HTML 파일 경로가 정확하며 스크립트 태그가 포함되어 있습니다. 형식이 올바르게 지정되었습니다.HTML ParserDelegator 및 ParserCallback이 작동하지 않습니다.

import java.io.*; 
import javax.swing.text.html.parser.ParserDelegator; 
import javax.swing.text.html.HTMLEditorKit; 
import javax.swing.text.html.HTML; 
import javax.swing.text.SimpleAttributeSet; 
import java.util.Enumeration; 

public class JSFinder { 
    //static ParserDelegator pd; 
    public JSFinder() { 
     //pd = new ParserDelegator(); 
    } 

    public static void main(String args[]) { 
     try { 
      HTMLEditorKit.ParserCallback callback = new ScriptTagCallBack(); 
      new ParserDelegator().parse(new InputStreamReader(new FileInputStream(new File ("<path-to-html>"))), callback, false); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
class ScriptTagCallBack extends HTMLEditorKit.ParserCallback { 
    public ScriptTagCallBack() { 
     super(); 
    } 
    public void handleStartTag(HTML.Tag t, SimpleAttributeSet a, int pos) { 
     if(t == HTML.Tag.SCRIPT) { 
      System.out.println("Found a script tag"); 
      System.out.println(a); 
     } 
     else { 
      System.out.println("Not a script tag"); 
     } 
    } 
    public void handleEndTag(HTML.Tag t, SimpleAttributeSet a, int pos) { 
     if(t == HTML.Tag.SCRIPT) { 
      System.out.println("Found a script tag"); 
      System.out.println(a); 
     } 
     else { 
      System.out.println("Not a script tag"); 
     } 
    } 
} 

내가 뭘 잘못하고 있니? 필자는 예제 (예 : http://www.java2s.com/Tutorial/Java/0320__Network/HTMLparserbasedonHTMLEditorKitParserCallback.htm)를 살펴본 결과 기본적으로 동일한 작업을 수행했습니다. 단, ParserCallback의 모든 메서드를 재정의하지 않았으며 URL 대신 파일 경로를 사용하고 있습니다. 미리 감사드립니다.

답변

1

HTMLEditorKit.ParserCallback의 메소드를 덮어 쓰는 대신 숨어 있음을 확인하려면 @Override 주석을 사용하십시오. 서명을 수정하면 제대로 작동합니다.

관련 문제