Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用soap4r生成XML而不调用web服务?_Ruby_Soap4r - Fatal编程技术网

Ruby 使用soap4r生成XML而不调用web服务?

Ruby 使用soap4r生成XML而不调用web服务?,ruby,soap4r,Ruby,Soap4r,我已经为一个web服务设置了一个soap4r客户端,它工作得相当好。我们使用它将数据从一个数据库发送到另一个数据库(不用费心问这个问题……我知道它不是最优的),但我们不能完全确定映射是否正确,因此获取特定记录将生成的XML通常非常方便 当然,这是可能的-如果您设置$DEBUG,soap4r将为您提供一个很好的XML转储。您甚至可以设置要将其发送到的“设备”(文件) 但是,我希望能够获得它将要生成的XML,而不必实际调用web服务 有办法做到这一点吗?翻来覆去,我发现了各种各样的obj2soap和

我已经为一个web服务设置了一个
soap4r
客户端,它工作得相当好。我们使用它将数据从一个数据库发送到另一个数据库(不用费心问这个问题……我知道它不是最优的),但我们不能完全确定映射是否正确,因此获取特定记录将生成的XML通常非常方便

当然,这是可能的-如果您设置
$DEBUG
soap4r
将为您提供一个很好的XML转储。您甚至可以设置要将其发送到的“设备”(文件)

但是,我希望能够获得它将要生成的XML,而不必实际调用web服务


有办法做到这一点吗?翻来覆去,我发现了各种各样的
obj2soap
和类似的方法,但它们似乎都不是我想要的。

一个间接的答案:你可能想看看。它的速度更快,而且更像红宝石。它使用生成器样式的XML生成,但您必须自己生成所有内容。它更像是一个工具箱,用于以干净的方式编写客户机。这样您就知道生成了什么(并且可以轻松地检查它)

另一个选项是设置$DEBUG并在之后恢复:

$REMEMBER_DEBUG_STATE = $DEBUG
$DEBUG = true
# call soap (and have your XML generated)
$DEBUG = $REMEMBER_DEBUG_STATE
可以将其提取为一个很好的函数,如下所示:

def with_debug_output
  remember = $DEBUG
  $DEBUG = true
  yield if block_given?
  $DEBUG = remember
end
然后使用它:

with_debug_output do
  # call soap
end

我对中途换马不感兴趣,所以我需要坚持使用soap4r。我知道$DEBUG,但我不想调用该服务;我只想获取生成的XML。