HTML-анализатор Java, включая теги сценария и LineNumberReader

0

Я расширил класс HTMLEditorKit.ParserCallback чтобы получить теги, комментарии и соответствующий номер строки html файла.

FileReader inputStreamReader = new FileReader( modelFile );
lineNumberReader = new LineNumberReader( inputStreamReader );
delegator.parse( lineNumberReader, this, true );

Обычно это работает, но если в html-документе содержится тег сценария, handleError() вызывается с сообщением об ошибке javascript.unsupported??? javascript.unsupported??? , Пока что так хорошо, я получаю содержимое тега скрипта как комментарий, но считыватель номера строки возвращает номер строки </html>; вместо </script>.

Как можно получить правильный номер строки?

Пример документа:

<html>
    <head>
    </head>
    <body>
        <script language="javascript">
            int a;
            function abc () {
            }
        </script>
    </body>
</html>

Спасибо, Майкл

Теги:

1 ответ

0

Выведите собственный класс ScriptPatchingReader из LineNumberReader.

В этом классе обратите внимание на <script а затем поместите новые строки только до </script>, сохранив тело сценария с номером строки. Впоследствии сделайте со скриптами то, что вы хотите. Возможно, вы захотите сохранить, было ли это в части <head> или <body>.

BTW FileReader использует текущую платформенную кодировку. Если имеется фиксированная кодировка, такая как UTF-8:

InputStreamReader inputStreamReader = new InputStreamReader(
    new FileInputStream(modelFile), "UTF-8");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню