У меня есть такой HTML:
<div>Lorem ipsum <b>dolor sit</b> amet.</div>
Как я могу найти совпадение на основе простого текста для моей строки поиска ipsum dolor
в этом HTML? Мне нужны указатели на начальный и конечный узлы XPath для совпадения, а также индексы символов, чтобы указывать на эти начальные и конечные узлы. Я использую Nokogiri для работы с DOM, но подойдет любое решение для Ruby.
Сложность:
Я не могу
node.traverse {|node| … }
просматривать DOM и выполнять поиск в виде простого текста всякий раз, когда встречается текстовый узел, потому что моя строка поиска может пересекать границы тегов.Я не могу выполнить обычный текстовый поиск после преобразования HTML в обычный текст, потому что в результате мне нужны индексы XPath.
Я мог бы реализовать это сам с помощью базового обхода дерева, но прежде чем я это сделаю, я спрашиваю, есть ли функция Nokogiri или трюк, чтобы сделать это более удобно.