Java HTML ParserDelegator和ParserCallback不工作

Java HTML ParserDelegator和ParserCallback不工作,java,html-parsing,htmleditorkit,Java,Html Parsing,Htmleditorkit,所以我想做的很简单。我正在解析HTML文档中的脚本标记,使用ParserDelegator,并使用ParserCallback吐出脚本标记。但是当我运行这个程序时,它什么也不做。永远不会调用回调。我的html文件路径是正确的,它确实包含脚本标记。它的格式也正确 import java.io.*; import javax.swing.text.html.parser.ParserDelegator; import javax.swing.text.html.HTMLEditorKit; impo

所以我想做的很简单。我正在解析HTML文档中的脚本标记,使用ParserDelegator,并使用ParserCallback吐出脚本标记。但是当我运行这个程序时,它什么也不做。永远不会调用回调。我的html文件路径是正确的,它确实包含脚本标记。它的格式也正确

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");
        }
    }
}
import java.io.*;
导入javax.swing.text.html.parser.ParserDelegator;
导入javax.swing.text.html.HTMLEditorKit;
导入javax.swing.text.html.html;
导入javax.swing.text.SimpleAttributeSet;
导入java.util.Enumeration;
公共类JSFinder{
//静电分析器;
公共JSFinder(){
//pd=新的ParserDelegator();
}
公共静态void main(字符串参数[]){
试一试{
HTMLEditorKit.ParserCallback callback=新建ScriptTagCallBack();
新的ParserDelegator().parse(新的InputStreamReader(新文件InputStream(新文件(“”)),回调,false);
}
捕获(例外e){
e、 printStackTrace();
}
}
}
类ScriptTagCallBack扩展了HTMLEditorKit.ParserCallback{
公共脚本标记回调(){
超级();
}
public void handleStartTag(HTML.Tag t、SimpleAttributeSet a、int-pos){
if(t==HTML.Tag.SCRIPT){
System.out.println(“找到脚本标记”);
系统输出打印项次(a);
}
否则{
System.out.println(“不是脚本标记”);
}
}
public void handleEndTag(HTML.Tag t、SimpleAttributeSet a、int-pos){
if(t==HTML.Tag.SCRIPT){
System.out.println(“找到脚本标记”);
系统输出打印项次(a);
}
否则{
System.out.println(“不是脚本标记”);
}
}
}

知道我做错了什么吗?我看了一些例子(比如这一个:),我做的基本上是相同的事情(除了可能我没有覆盖ParserCallback的所有方法,我使用的是文件路径而不是URL)。提前感谢。

使用
@Override
注释查看您正在隐藏而不是覆盖
HTMLEditorKit.ParserCallback
的方法。修复签名,它就会工作。

使用
@Override
注释查看您正在隐藏而不是覆盖
HTMLEditorKit.ParserCallback
的方法。修复签名,它就会工作