"foo"를 "bar"로 바꾸는 방법은 무엇입니까? 태그없이Nokogiri가 태그 값을 대체합니다.
<h1>bar1<p>bar2<a href="foo3.com">bar4</a>bar5</p>bar6</h1>
난 단지 태그 내부의 콘텐츠를 대체하려는
<h1>foo1<p>foo2<a href="foo3.com">foo4</a>foo5</p>foo6</h1>
에서
, 속성.
아이디어가 있으십니까?
"foo"를 "bar"로 바꾸는 방법은 무엇입니까? 태그없이Nokogiri가 태그 값을 대체합니다.
<h1>bar1<p>bar2<a href="foo3.com">bar4</a>bar5</p>bar6</h1>
난 단지 태그 내부의 콘텐츠를 대체하려는
<h1>foo1<p>foo2<a href="foo3.com">foo4</a>foo5</p>foo6</h1>
에서
, 속성.
아이디어가 있으십니까?
require 'rubygems'
require 'nokogiri'
doc = Nokogiri::HTML(DATA)
doc.xpath('//text()').each {|foo|
dummy = foo.add_previous_sibling(Nokogiri::XML::Node.new("dummy", doc))
dummy.add_previous_sibling(Nokogiri::XML::Text.new(foo.to_s.gsub(/foo/, "bar"), doc))
foo.remove
dummy.remove
}
puts doc
__END__
<h1>foo1<p>foo2<a href="foo3.com">foo4</a>foo5</p>foo6</h1>
나는 foo.inner_html.gsub!(/foo/, "bar")
작품 아니면 foo.inner_html = foo.inner_html.gsub(/foo/, "bar")
생각했을 것이다, 그러나 그렇지 않습니다.
더미 노드는 새 텍스트 노드를 이전 텍스트 노드와 계속 유지하는 것입니다.
나는
nokogiri_doc.css('p').each { |p| p.inner_html = p.inner_html.gsub(/\n/, "<br/>") }
태그
를 BR하는 p 태그 안에 \ n의 모든 발생 회수를 교체하려면 할 수 있습니다. –
니스, 영리한 aproach이 작동 훨씬 더 우아 – astropanic