class Nokogiri::XML::Document

def create_element name, *args, &block


doc.create_element "div" { |node| node['class'] = "container" } #

doc.create_element "div", "contents", :class => "container" #
contents

doc.create_element "div", "contents" #
contents

doc.create_element "div", :class => "container" #

doc.create_element "div" #


Create an element with +name+, and optionally setting the content and attributes.
#
def create_element name, *args, &block
  elm = Nokogiri::XML::Element.new(name, self, &block)
  args.each do |arg|
    case arg
    when Hash
      arg.each { |k,v|
        key = k.to_s
        if key =~ NCNAME_RE
          ns_name = key.split(":", 2)[1]
          elm.add_namespace_definition ns_name, v
        else
          elm[k.to_s] = v.to_s
        end
      }
    else
      elm.content = arg
    end
  end
  if ns = elm.namespace_definitions.find { |n| n.prefix.nil? or n.prefix == '' }
    elm.namespace = ns
  end
  elm
end