def traverse_data node, klass
obj = klass.new nil
props = obj.props
children = node.children.select(&:element?)
n = children.size
i = 0
klass.full_props_desc.each do |desc|
name = desc['name']
child_type = desc['wsdl_type']
while child = children[i] and not klass.full_props_set.member? child.name
i += 1
end
if desc['is-array']
a = []
while ((child = children[i]) && (child.name == name))
child = children[i]
a << deserialize(child, child_type)
i += 1
end
props[name.to_sym] = a
elsif ((child = children[i]) && (child.name == name))
props[name.to_sym] = deserialize(child, child_type)
i += 1
end
end
obj
end