将XML参数映射到Ruby类,同时使用Wash-Out Gem作为肥皂请求



我正在使用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。

我不知道在不映射每个嵌套属性的情况下将其做到这一点。

最新更新