그래서 저는 뭘 하려는지 꽤 간단합니다. 스크립트 태그에 대해 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 대신 파일 경로를 사용하고 있습니다. 미리 감사드립니다.