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