0

HandSoapを使用して、JAX-WSSOAPAPIのクライアントコードを作成しています。Nokigiri gemを使用してSoapResponseからXMLを抽出することはできますが、その応答を特定のクラスに変換することはできません。Handsoap :: SoapResponseを特定のクラスに変換する方法はrubyにありますか?

4

1 に答える 1

0

私はいくつかの調査を行いましたが、それを直接行う方法は他にないようです。そのため、XMLを使用してハッシュを取得し、このハッシュを再帰的にトラバースしてクラスインスタンスを初期化します。

SOAP応答からXMLとハッシュを取得するには

  response = client.someSoapCall({:someParameter => "someValue"})
  doc = Nokogiri::XML.parse(response.document.to_raw)
  hash = Hash.from_xml(doc.to_s)

この関数はハッシュをクラスにキャストします

def recast(className, hash)
  hash.each_pair do |k, v|
    if (v.class==Hash)
      find(className, v)
    else
      membersArray = className.public_methods
      membersArray.each {
          |x|

        if (x.to_s==k.to_s)
          member =x.to_s
          className.send "#{member}=", v.to_s
        end

      }
    end
  end

end
于 2013-02-05T08:55:43.210 に答える