2010-01-19 2 views
2

nokogiri 요소의 텍스트를 편집하는 방법이 있습니까? 목록 요소 (<li>)가 포함 된 nokogiri 요소가 있고 <li> html을 유지하면서 텍스트에서 일부 문자를 제거하고 싶습니다. 특히, 텍스트에서 선행하는 ":"문자가 있으면 제거하고 싶습니다. 그것은 nokogiri 요소에 대한 text = method가있는 것처럼 보이지 않지만 확실하게 싶었습니다.Nokogiri 요소에서 텍스트 편집 또는 Regex 사용

아마도 정규 표현식을 사용해야합니까? 그렇다면 다음과 같이하면 앞에 ":"을 어떻게 제거 할 수 있습니까?

<li>: blah blah blah</li> 

p.s. 나는 루비를 사용하고있다.

답변

5
#!/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> 
+0

'li.content = li.content.gsub (/^: * /,' ')'가 아니어야합니까? –

+0

@ 대니얼, 당신이 날 잡았어. 이 코드는 게시하기 전에 반복되었습니다. 그런 다음 이전 반복에서 남겨진 변수 이름을 확인하고 올바른 이름에 대한 대답을 편집하기로 결정했습니다. 그러나 나는 그것을 놓쳤다. –

+0

목록 요소에있는 링크를 보존하는 것은 어떻습니까? – TenJack