我正在使用 HandSoap 为 JAX-WS SOAP API 制作客户端代码。我能够使用 Nokigiri gem 从 SoapResponse 中提取 XML,但我无法将该响应转换为任何特定的类。ruby 有什么方法可以将 Handsoap::SoapResponse 转换为特定的类?
问问题
89 次
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 回答