我正在使用Wash-Out Gem(https://github.com/inossidabile/wash_out(用于公开肥皂服务。
示例用水文档的用法类似:
# Params from XML attributes;
# e.g. for a request to the 'AddCircle' action:
# <soapenv:Envelope>
# <soapenv:Body>
# <AddCircle>
# <Circle radius="5.0">
# <Center x="10" y="12" />
# </Circle>
# </AddCircle>
# </soapenv:Body>
# </soapenv:Envelope>
soap_action "AddCircle",
:args => { :circle => { :center => { :@x => :integer,
:@y => :integer },
:@radius => :double } },
:return => nil, # [] for wash_out below 0.3.0
:to => :add_circle
def add_circle
circle = params[:circle]
Circle.new(circle[:center][:x], circle[:center][:y], circle[:radius])
render :soap => nil
end
但是我的XML请求有许多嵌套的参数,我不想为每个XML属性定义映射(:args(。是否有任何方法可以将XML请求(XSD(映射到Ruby Hash中,该形式所需的形式为:用于肥皂作用的args。
我不知道在不映射每个嵌套属性的情况下将其做到这一点。