我有Nokogiri::XML::Element
,其中如下所示:
<div class="berg">This is some text!</div>
我想要做的只是从div中提取文本(这是Nokogiri元素)然后用新标签包装文本,使它看起来像这样:
<div class="berg"><span>This is some text!</span></div>
Nokogiri .wrap
函数似乎用新标签包装标签,而不是文本内容,我想知道如何包装标签内容。
答案 0 :(得分:4)
您可以设置div元素的inner_html
。这是一个有效的例子:
html = '<div class="berg">This is some text!</div>'
doc = Nokogiri::HTML.fragment(html)
berg = doc.at('div.berg') # Or xpath, or whatever method you choose
# Wrap the text in <span>
berg.inner_html = "<span>#{berg.text}</span>"
puts doc #=> <div class="berg"><span>This is some text!</span></div>
重要的部分是使用inner_html
,添加<span>
元素并将现有文本元素放入其中。
答案 1 :(得分:3)
你会这样做:
doc.search('div.berg text()').wrap('<span>')