def self.ary2soap(ary, type_ns = XSD::Namespace, typename = XSD::AnyTypeLiteral, registry = nil, opt = EMPTY_OPT)
registry ||= Mapping::DefaultRegistry
type = XSD::QName.new(type_ns, typename)
soap_ary = SOAPArray.new(ValueArrayName, 1, type)
protect_threadvars(:SOAPMarshalDataKey, :SOAPExternalCES, :SOAPMarshalNoReference) do
Thread.current[:SOAPMarshalDataKey] = {}
Thread.current[:SOAPExternalCES] = opt[:external_ces] || $KCODE
Thread.current[:SOAPMarshalNoReference] = opt[:no_reference]
ary.each do |ele|
soap_ary.add(_obj2soap(ele, registry, type))
end
end
soap_ary
end