# File soap/encodingstyle/literalHandler.rb, line 29
  def encode_data(generator, ns, qualified, data, parent)
    attrs = {}
    name = if qualified and data.elename.namespace
        SOAPGenerator.assign_ns(attrs, ns, data.elename.namespace)
        ns.name(data.elename)
      else
        data.elename.name
      end

    case data
    when SOAPRawString
      generator.encode_tag(name, attrs)
      generator.encode_rawstring(data.to_s)
    when XSD::XSDString
      generator.encode_tag(name, attrs)
      str = data.to_s
      str = XSD::Charset.encoding_to_xml(str, @charset) if @charset
      generator.encode_string(str)
    when XSD::XSDAnySimpleType
      generator.encode_tag(name, attrs)
      generator.encode_string(data.to_s)
    when SOAPStruct
      generator.encode_tag(name, attrs)
      data.each do |key, value|
        if !value.elename.namespace
          value.elename.namespace = data.elename.namespace
        end
        yield(value, true)
      end
    when SOAPArray
      generator.encode_tag(name, attrs)
      data.traverse do |child, *rank|
        data.position = nil
        yield(child, true)
      end
    when SOAPElement
      generator.encode_tag(name, attrs.update(data.extraattr))
      generator.encode_rawstring(data.text) if data.text
      data.each do |key, value|
        yield(value, qualified)
      end
    else
      raise EncodingStyleError.new("Unknown object:#{ data } in this encodingStyle.")
    end
  end