Java HTML ParserDelegator和ParserCallback不工作
所以我想做的很简单。我正在解析HTML文档中的脚本标记,使用ParserDelegator,并使用ParserCallback吐出脚本标记。但是当我运行这个程序时,它什么也不做。永远不会调用回调。我的html文件路径是正确的,它确实包含脚本标记。它的格式也正确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
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
的方法。修复签名,它就会工作