Как осуществляется поиск в веб-браузере? - PullRequest
3 голосов
/ 14 сентября 2010

Я хочу реализовать в настольном приложении поиск в java и выделение нескольких фраз в html файлах, как это делается в веб-браузерах, поэтому теги html (внутри < и >) игнорируются , но некоторые теги, такие как <b>, не игнорируются. При поиске, например, each table в тексте ...each <b>table</b> has name... будет выделено, а в тексте ...has each</p><p> Table is... оно не будет выделено, потому что тег <p> прерывает значение текста.
в веб-браузере это как-то реализовано, как я могу добраться до этой реализации? или есть какой-то источник в сети? Я пробовал гугл, но безуспешно: (

Ответы [ 4 ]

2 голосов
/ 14 сентября 2010

Вместо поиска внутри фактического HTML-файла браузеры выполняют поиск по отрендеренному выводу этого HTML.

Получите подходящий HTML рендерер и получите его вывод в виде текста. Затем выполните поиск в этом текстовом выводе, используя соответствующие алгоритмы поиска строк.

Пример, который вы выделили в своем вопросе, приведет к появлению символа новой строки в выводе HTML, и, следовательно, обычный алгоритм поиска строк будет работать так, как вы ожидаете.

1 голос
/ 13 января 2012

Как сказал Фейсал, браузеры осуществляют поиск только в визуализированном контенте. Для этого вам необходимо удалить теги HTML перед тем, как приступить к поиску:

Этот код может помочь вам: http://www.dotnetperls.com/remove-html-tags

Конечно, вам нужно добавить некоторые проверки / исключения, такие как теги сценария и другие вещи, которые не отображаются в браузере.

0 голосов
/ 14 сентября 2010

Попробуйте использовать пакет javax.swing.text.html в java.

0 голосов
/ 14 сентября 2010

Это кажется довольно простым.

1) Поиск последнего слова в строке. 2) Посмотрите, что перед последним словом. 3) Решите, будет ли то, что находится перед последним словом, прерыванием (<p>, <br />, <div>). 4) При прерывании continue 5) Else сравнить предыдущее слово с поисковым запросом.

Я не знаю, так ли это выполняют браузеры, но этот подход должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...