При синтаксическом анализе xml
<MessageList>
<TradeMessage ID="4850644"/>
<TradeMessage ID="4850666"/>
<TradeMessage ID="4850667"/>
<TradeMessage ID="4850712"/>
</MessageList>
возвращается хеш {MessageList: TradeMessage: [{@id: '123'},...,{@id: '456'}]}
Но если xml будет выглядеть как
<MessageList>
<TradeMessage ID="4850644"/>
</MessageList>
Будет возвращено {MessageList: TradeMessage: {@id: '123'}}
Так что я не могу перебрать список сообщений, потому что это может быть хеш или массив.
Мой код для обхода массива:
t[:message_list][:trade_message].each do |m|
TradeMessage.create(id: m[:@id])
end
Что делать в такой ситуации?Должен ли я сменить xml-парсер с deafult nokogiri на что-то еще?
Обновление: Я заметил, что Hash.from_xml (string) возвращает хэш, подобный массиву savon - массив, если несколько тегов, хэшесли один тег.
Мое решение: использовать документ nokogiri для анализа ответа савона response.doc