如何使用Ruby从这个SOAP信封中提取/解析?
我正在使用一个使用soap/wsdlDriver的gem 当我发帖时,我得到一个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::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
值?因为它看起来像是classSOAP::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堆栈上检查过的--仍然得到错误:(