Ну, вот мое предложение.
Проблема в том, что вам нужно поймать правильную часть результата, которую вы действительно можете перебрать. К сожалению, все проверки в мире не помогут вам, потому что это огромный кусок нечитаемого текста.
Что я делаю, это:
File.open('myresult.yaml', 'w') {|f| f.write(result.to_yaml) }
Это будет намного более читабельный формат. То, что вы, вероятно, ищете, выглядит примерно так:
--- !ruby/object:SOAP::Mapping::Object
__xmlattr: {}
__xmlele:
- - &id024 !ruby/object:XSD::QName
name: ListAddressBooksResult <-- Hash name, so it's resul["ListAddressBooksResult"]
namespace: http://apiconnector.com
source:
- !ruby/object:SOAP::Mapping::Object
__xmlattr: {}
__xmlele:
- - &id023 !ruby/object:XSD::QName
name: APIAddressBook <-- this bastard is enumerable :) YAY! so it's result["ListAddressBooksResult"]["APIAddressBook"].each
namespace: http://apiconnector.com
source:
- - !ruby/object:SOAP::Mapping::Object
Выше приведен результат API DotMailer, который я провел последний час, пытаясь выяснить, как перечислять результаты. Выше - техника, которую я использовал, чтобы выяснить, что, черт возьми, происходит. Я думаю, что это лучше, чем использовать REXML и т.д., я мог бы сделать что-то вроде этого:
result['ListAddressBooksResult']['APIAddressBook'].each {|book| puts book["Name"]}
Ну, я надеюсь, что это поможет любому, кто смотрит.
/ * Ясон 1016 *