htmlparser在分析RemarkNode注释时的bug

在使用 htmlparser1.6 分析一段Html时发现一个bug

这段html代码如下 (只提取了其中部分代码)

<HTML>
<head></head>
<body>
<P>
                 
<!----------Start Sponsers------------------------------------------------------------------------------->

<table align="center" width="539" border="0" cellspacing="3" cellpadding="0" 
                        bgcolor=ffffff height="127"><tr>
    <td valign=top 
    colspan="2" width="529" height="15" bgcolor="#FFFFC6">
    <a href="http://www.abc.com/" target="_blank" style="font-size: 12px;">web hosting</a> 

                  <center>
<script type="text/javascript"><!--
//120x90, created 1/21/08
google_ad_width = 120;
google_ad_height = 90;
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

<P><a href="http://www.baidu.com">baidu</a>
</center>
<h6 align="center">Copyright </h6>
</body>
</HTML>
 

使用LinkTag来filter连接时,发现"Start Sponsers"注释行下面的http://www.abc.com/取不到。

跟了一下源代码,发现问题出在org.htmlparser.lexer.Lexer的parseRemark()函数上。其判断Remark注释结束标志的算法有问题。

我加了一个判断Remark结束的方法如下

    public boolean isRemarkEnd(StringBuffer remarkTagEnd, char ch) {
    	remarkTagEnd.append(ch);
		if (remarkTagEnd.length() == 4) {
			remarkTagEnd.deleteCharAt(0);
		}
		return REMARK_END.equals(remarkTagEnd.toString());
    }

如果判断出Remark结束标志则设置parseRemark()函数中的done = true;

你可能感兴趣的:(JavaScript,html,算法,Web,Google)