이 파서 사용하여 작업을 수행하는 방법의 간단한 예입니다 : 우리를 분석 한 후
require 'nokogiri'
html = '<p>lorem ipsum blah blah ipsum</p>
<!--start-->
REPLACE MULTI-LINE
CONTENT HERE...
<!--end-->
<p>other stuff still here...</p>'
doc = Nokogiri.HTML(html)
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>
# >> <p>lorem ipsum blah blah ipsum</p>
# >>
# >> <!--start-->
# >> REPLACE MULTI-LINE
# >> CONTENT HERE...
# >> <!--end-->
# >>
# >> <p>other stuff still here...</p>
# >> </body></html>
doc.at('//comment()/following-sibling::text()').content = "\nhello world!\n"
puts doc.to_html
, 주석을 찾아 다음 text()
노드에 스테핑 교체 한 후 그것 :
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body>
# >> <p>lorem ipsum blah blah ipsum</p>
# >>
# >> <!--start-->
# >> hello world!
# >> <!--end-->
# >>
# >> <p>other stuff still here...</p>
# >> </body></html>
당신의 HTML은 언제나 단순하고 단순한 검색 패턴을 위반하는 문자열을 가질 가능성이있는 경우 검색/바꾸기를 수행 할 수 있습니다.
주변을 살펴보면 간단한 HTML 조작에 대해 파서를 사용해야한다는 것을 알 수 있습니다. 왜냐하면 문서의 실제 구조를 다루기 때문입니다. 따라서 문서가 변경되면 파서가 혼동되지 않을 가능성이 높아집니다.
템플릿 파일을 사용하여 HTML 콘텐츠를 생성하는 경우 ERB 또는 [HAML] (http://haml-lang.com/)을 검토 할 수 있습니다. 개인적으로, 나는 좋은 HTML 속기로서 HAML을 선호한다. 다른 콘텐츠를 상용구에 삽입해야하는 경우 검색/바꾸기보다 더 나은 솔루션이 될 것입니다. –