Я расширил класс 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>
Спасибо, Майкл
Выведите собственный класс ScriptPatchingReader из LineNumberReader.
В этом классе обратите внимание на <script
а затем поместите новые строки только до </script>
, сохранив тело сценария с номером строки. Впоследствии сделайте со скриптами то, что вы хотите. Возможно, вы захотите сохранить, было ли это в части <head>
или <body>
.
BTW FileReader использует текущую платформенную кодировку. Если имеется фиксированная кодировка, такая как UTF-8:
InputStreamReader inputStreamReader = new InputStreamReader(
new FileInputStream(modelFile), "UTF-8");