有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java HTML解析器,包括脚本标记和LineNumberReader

我扩展了类HTMLEditorKit.ParserCallback,以获得html文件的标记、注释和相应的行号

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

正常情况下,它可以工作,但是如果html文档包含脚本标记,handleError()将被调用,并显示错误消息javascript.unsupported ? ? ?。 到目前为止还不错,我得到了脚本标记的内容作为注释,但是行号读取器返回了</html>的行号;而不是</script>

如何获得正确的行号

示例文件:

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

谢谢, 迈克尔


共 (1) 个答案

  1. # 1 楼答案

    从LineNumberReader派生您自己的ScriptPatchingReader类

    在该类中,注意<script,然后只在</script>之前放置一个换行符,保存带有行号的脚本正文。之后,按照您的要求处理脚本。 您可能希望存储它是在<head>部分还是在<body>部分

    顺便说一句,FileReader使用当前平台编码。如果具有固定编码(如UTF-8):

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