class Nokogiri::XML::Node

def replace(node_or_tags)

Also see related method +swap+.

a DocumentFragment, NodeSet, or String).
Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is

containing markup.
+node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String

Replace this Node with +node_or_tags+.
###
def replace(node_or_tags)
  raise("Cannot replace a node with no parent") unless parent
  # We cannot replace a text node directly, otherwise libxml will return
  # an internal error at parser.c:13031, I don't know exactly why
  # libxml is trying to find a parent node that is an element or document
  # so I can't tell if this is bug in libxml or not. issue #775.
  if text?
    replacee = Nokogiri::XML::Node.new("dummy", document)
    add_previous_sibling_node(replacee)
    unlink
    return replacee.replace(node_or_tags)
  end
  node_or_tags = parent.coerce(node_or_tags)
  if node_or_tags.is_a?(XML::NodeSet)
    node_or_tags.each { |n| add_previous_sibling(n) }
    unlink
  else
    replace_node(node_or_tags)
  end
  node_or_tags
end