Nokogiri: Как вы получаете родительский узел элемента DOM, когда у вас есть только строковый индекс элемента, который вы хотите в dom? - PullRequest
1 голос
/ 09 декабря 2011

Вот что у меня есть:

  • DOM хранится в виде текста
  • У меня есть строковый индекс области, в которой я хочу получить родительский узел, индекс может быть или не быть началом тега (он никогда не будет частью тега, так как это выбор пользователя
  • У меня также есть htmltext в индексе (очевидно)

Это насколько я получил:

doc = Nokogiri::HTML(content.body)

Я знаю, что nokogiri может выполнять операции с xpath, но я не знаю, может ли xpath выполнять стандартный поиск текста? выделенный текст может охватывать несколько узлов, и я думаю, что это нарушает поиск xpath o.o

Я использую Ruby 1.8.7 и rails 2.3.8

1 Ответ

0 голосов
/ 11 декабря 2011

Нет корреляции между индексом в конкретной сериализации XML-документа и элементом.Самое близкое, что вы можете сделать:

Рекурсивно, на каждом уровне DOM, сериализуйте элемент и посмотрите, достигла ли его длина (добавленная к тому, что у вас есть) до вашего индекса.

К сожалениюэто не гарантируется, так как:

  1. Возможно много различных (неканонических) сериализаций, которые описывают один и тот же XML-документ (например, foo="You said, "Hi!"" против foo='You said, "Hi!"').

  2. В зависимости от того, считаете ли вы пустые пробельные узлы значимыми, два разных XML-документа могут обрабатываться одинаково (например, <foo><bar> против <foo>\n\t<bar>)

  3. В HTML могут быть удалены дополнительные незначимые пробелы (например, <p>a b</p> против <p>a b</p>).

...