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 楼答案
从LineNumberReader派生您自己的ScriptPatchingReader类
在该类中,注意
<script
,然后只在</script>
之前放置一个换行符,保存带有行号的脚本正文。之后,按照您的要求处理脚本。 您可能希望存储它是在<head>
部分还是在<body>
部分顺便说一句,FileReader使用当前平台编码。如果具有固定编码(如UTF-8):