5

我有一个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函数似乎用新标签包装标签,而不是它们的文本内容,我想知道你如何包装标签间内容。

4

2 回答 2

6

您可以设置inner_htmldiv 元素的。这是一个工作示例:

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>元素并将现有的文本元素放入其中。

于 2013-05-10T10:13:58.593 回答
3

你会这样做:

doc.search('div.berg text()').wrap('<span>')
于 2013-05-10T12:37:48.640 回答