0

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

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 回答