网络浏览器搜索是如何实现的?

3

我希望在Java桌面应用程序中实现搜索和高亮显示HTML文件中的多个短语,就像在Web浏览器中一样。这意味着HTML标记(在<>之间的标记)将被忽略,但某些标记如<b>则不会被忽略。例如,在文本...每个<b>表</b>都有名称...中搜索每个表将被突出显示,但在文本...每个</p><p>表格是...中将不会被突出显示,因为<p>标记打断了文本的含义。
在Web浏览器中,这种情况已经得到了解决,您可以通过哪种方式获得该实现?或者是否有网上的资源可供使用?我尝试了谷歌搜索,但没有成功 :(

4个回答

2

浏览器搜索的不是HTML文件本身,而是该HTML的呈现输出。

获取适当的HTML渲染器并以文本形式获取其输出。然后使用适当的字符串搜索算法在该文本输出上进行搜索。

你在问题中强调的示例会在呈现的HTML输出中产生换行符,因此普通字符串搜索算法会按照你的期望行事。


+1 谢谢到目前为止的最佳答案,但我想要一个算法在桌面应用程序中实现这个功能...我不相信没有人尝试过这个 :) - Zavael

1
正如 Faisal 所述,浏览器仅搜索已呈现的内容。因此,在进行实际搜索之前,您需要删除 HTML 标记:
这段代码可能会对您有所帮助: http://www.dotnetperls.com/remove-html-tags 当然,您还需要添加一些检查和排除项,例如脚本标记和其他未在浏览器中呈现的内容。

0

这似乎很容易。

1)搜索字符串中的最后一个单词。 2)查看最后一个单词之前的内容。 3)确定最后一个单词之前的内容是否构成中断(<p>,<br />,<div>)。 4)如果是中断,则继续。 5)否则将前一个单词与搜索查询进行评估。

我不知道浏览器是否以此方式执行此操作,但这种方法应该有效。


那您是建议将 HTML 文本分成一些纯文本部分,然后在这些部分中进行搜索?还是我误解了您的意思? - Zavael

0

尝试在Java中使用javax.swing.text.html包。


我知道这是一个老问题,但你能否分享更多信息或示例,以供未来的访问者使用? - Zavael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接