Редактирование текста в элементе нокогири или использование регулярных выражений - PullRequest
2 голосов
/ 19 января 2010

Есть ли способ отредактировать текст элемента нокогири? У меня есть элемент nokogiri, который содержит элемент списка (<li>), и я хотел бы удалить некоторые символы из текста при сохранении <li> html. В частности, я хочу удалить начальный символ ":" в тексте, если он существует. Не похоже, что есть метод text = для элементов nokogiri, но я просто хотел убедиться.

Может быть, мне придется использовать регулярные выражения? Если да, то как бы удалить ведущий ":", если он выглядит примерно так:

<li>: blah blah blah</li>

p.s. Я использую рубин.

1 Ответ

5 голосов
/ 19 января 2010
#!/usr/bin/ruby1.8

require 'rubygems'
require 'nokogiri'

html = <<EOS
  <ul>
    <li>: blah blah blah</li>
    <li>: foo bar baz</li>
  </ul>
EOS

doc = Nokogiri::HTML.parse(html)
for li in doc.xpath('//li/text()')
  li.content = li.content.gsub(/^: */, '')
end
puts doc.to_html

# => <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# => <html><body><ul>
# => <li>blah blah blah</li>
# =>     <li>foo bar baz</li>
# =>   </ul></body></html>
...