【发布时间】:2014-09-02 11:45:47
【问题描述】:
我有一个 HTML 字符串(例如 <div class="input">hello</div>),并且我只想在字符串中的 HTML 标记是 label(例如 <label>Hi</label>)时添加一个节点。
doc = Nokogiri::XML(html)
doc.children.each do |node|
if node.name == 'label'
# this code gets called
span = Nokogiri::XML::Node.new "span", node
span.content = "hello"
puts span.parent
# nil
span.parent = node
# throws error "node can only have one parent"
end
end
doc.to_html # Does not contain the span.
我一生都无法理解我做错了什么,任何帮助都会非常感激。
编辑:这解决了我的问题,感谢您的回答!
# notice DocumentFragment rather than XML
doc = Nokogiri::HTML::DocumentFragment.parse(html_tag)
doc.children.each do |node|
if node.name == 'label'
span = Nokogiri::XML::Node.new "span", doc
node.add_child(span)
end
end
【问题讨论】:
-
您希望新跨度显示在哪里?
-
您需要展示一个示例,说明您的输出/结果 HTML 应该是什么样子。
标签: ruby-on-rails ruby nokogiri