HTML ParserDelegator и ParserCallback не работают - PullRequest
1 голос
/ 02 июля 2011

так что я пытаюсь сделать это довольно просто.Я анализирую 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 Ответ

1 голос
/ 03 июля 2011

Используйте аннотацию @Override, чтобы увидеть, что вы скрываете, а не переопределяете методы HTMLEditorKit.ParserCallback.Исправьте подписи, и это работает.

...