如何使用Ruby从这个SOAP信封中提取/解析?

如何使用Ruby从这个SOAP信封中提取/解析?,ruby,regex,soap,Ruby,Regex,Soap,我正在使用一个使用soap/wsdlDriver的gem 当我发帖时,我得到一个SOAP响应,并且无法轻松解析它 这是我得到的回应: #<SOAP::Mapping::Object:0x159e95faf098 {}id="27b907f8-da51-f611-ab02-4c5f88a8ec8 8" {}error=#<SOAP::Mapping::Object:0x159e95fae33c {}number="0" {}name="No Error" {}description=

我正在使用一个使用soap/wsdlDriver的gem

当我发帖时,我得到一个SOAP响应,并且无法轻松解析它

这是我得到的回应:

#<SOAP::Mapping::Object:0x159e95faf098 {}id="27b907f8-da51-f611-ab02-4c5f88a8ec8
8" {}error=#<SOAP::Mapping::Object:0x159e95fae33c {}number="0" {}name="No Error"
 {}description="No Error">>
#
我需要在id=“xxxx”中获取整个值

这是heroku上的功能(注意:它在本地工作)。这来自于测试response.id的各种变体(其中response.inspect创建了上述输出)

f“ {}错误=#> 答复[id] /disk1/home/slugs/220752_47a08bb_10e7/mnt/app/controllers/sugarcrm_controller.rb :77:警告:对象#id将为 不推荐使用;使用对象#对象id nil response.id: /disk1/home/slugs/220752_47a08bb_10e7/mnt/app/controllers/sugarcrm_controller.rb :79:警告:对象#id将被删除 不推荐使用;使用对象#对象_id 23891500658740 /disk1/home/slugs/220752_47a08bb_10e7/mnt/app/controllers/sugarcrm_controller.rb :80:警告:对象#id将为 不推荐使用;使用对象#对象_id 联系电话号码是:23891500658740 活动:


我不知道如何使用ruby实现这一点,但可能与javascript中的代码类似

var t = "<SOAP message........>";
var id = t.replace(/.*id=\"(.*?)\".*/, "$1");

因此,所有内容都将被id内容取代。

我不知道如何使用ruby实现这一点,但可能与javascript中的代码类似

var t = "<SOAP message........>";
var id = t.replace(/.*id=\"(.*?)\".*/, "$1");

因此,所有内容都将替换为id内容。

好的,我95%确定这是响应的输出,而不是实际响应。从该类中,您可以使用
[]
方法提取属性

如果我读对了,那么你可能会想:

response_id = response_object['id']
虽然以
{}
开头的每个属性看起来都很奇怪。因此,如果这实际上是属性名称的一部分,您可能需要:

response_id = response_object['{}id']
但这似乎很奇怪,可能表明您使用的SOAP库没有正确解析响应


免责声明:我以前从未使用过这个库,只是在阅读文档时发布了这个库……这可能非常准确,也可能不准确。

好的,我95%确定这是的输出,而不是实际的响应。从这个类中,您可以使用
[]
方法提取属性

如果我读对了,那么你可能会想:

response_id = response_object['id']
虽然以
{}
开头的每个属性看起来都很奇怪。因此,如果这实际上是属性名称的一部分,您可能需要:

response_id = response_object['{}id']
但这似乎很奇怪,可能表明您使用的SOAP库没有正确解析响应


免责声明:我以前从未使用过这个库,只是在阅读文档后发布了这个库……从使用这个类的方式来看,这可能非常准确,也可能不准确。

这是实际的服务器响应吗?还是某个对象的
inspect
值?因为它看起来像是class
SOAP::Mapping::O的ruby实例bject
。如果是这样,我敢打赌它有某种API来访问此数据。
object.attributes[:id]
或者其他什么。嗯……我需要检查一下,我不记得了。现在看看代码……我如何找到访问数据的方法?我尝试了response.id,但它不起作用(response=SOAP调用)是的,您是对的,它是一个.inspect。这是实际的服务器响应吗?还是某个对象的
inspect
值?因为它看起来像是类
SOAP::Mapping::object
的ruby实例。如果是这样,我打赌它一定有某种API来访问此数据。
object.attributes[:id]
或者什么。嗯……我需要检查一下,我不记得了。现在看看代码……我如何找到访问数据的方法?我尝试了response.id,但它不起作用(response=SOAP CALL)是的,你是对的,这是一个。是的,这是我所希望的…但我得到的是一个不同的字符串当我这样做时。它在本地工作,但当我heroku,而不是字母数字字符串,我得到的是一个数字字符串,这是不正确的…想法?这是我在heroku和local上得到的输出:Object#id将被弃用;使用Object#object_id也许这会让我们了解一些情况?可能是ruby的不同版本或SOAP库导致它以两种不同的方式运行。嗨,我怎么能检查——我相信我们都在ruby 1.8.7上……啊,等等,另一个应用程序仍然在旧的应用程序上……啊,是的,这就是我刚刚在新的heroku堆栈上检查过的应用程序——仍然得到错误:(是的,这正是我所希望的……但当我这样做时,我得到的是一个不同的字符串。它在本地工作,但当我使用heroku,而不是字母数字字符串时,我得到的只是一个数字字符串,这是不正确的……想法?以下是我在heroku和local上得到的输出:Object#id将被弃用;使用Object#Object#id可能会被弃用一些亮点?可能是不同版本的ruby或SOAP库导致它以两种不同的方式运行。嗨,我怎么能检查--我相信我们都在ruby 1.8.7上…啊,等等,另一个应用程序仍然在旧应用程序上…啊,是的,这就是我刚刚在新的heroku堆栈上检查过的--仍然得到错误:(