HTML ParserDelegator и ParserCallback не работают
Так что я пытаюсь сделать это довольно просто. Я анализирую 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");
}
}
}
Есть идеи, что я делаю не так? Я посмотрел на примеры (как этот: http://www.java2s.com/Tutorial/Java/0320__Network/HTMLparserbasedonHTMLEditorKitParserCallback.htm), и я делаю в основном то же самое (за исключением, может быть, я не переопределил все методы ParserCallback и я использую путь к файлу вместо URL). Заранее спасибо.
1 ответ
Использовать @Override
аннотации, чтобы увидеть, что вы прячете, а не переопределяете методы HTMLEditorKit.ParserCallback
, Исправьте подписи, и это работает.