XML-анализ Rails - PullRequest
       12

XML-анализ Rails

20 голосов
/ 04 августа 2010

Может кто-нибудь сказать мне, как разобрать это на рельсах.

<?xml version="1.0" encoding="utf-8"?>
<message>
  <param>
    <name>messageType</name>
    <value>SMS</value>
  </param>
  <param>
    <name>id</name>
    <value>xxxxxxxxxxxxxx</value>
  </param>
  <param>
    <name>source</name>
    <value>xxxxxxxxxxx</value>
  </param>
  <param>
    <name>target</name>
    <value>xxxxxxxxxxxxx</value>
  </param>
  <param>
    <name>msg</name>
    <value>xxxxxxxxxxxxx</value>
  </param>
  <param>
    <name>udh</name>
    <value></value>
  </param>
</message>

У меня нет контроля над этим xml, но я надеюсь, что смогу сделать так, чтобы этот параметр выглядел до сохранения в моей базе данных

message"=>{"msg"=>"sampler", "id"=>"1", "target"=>"23123", "source"=>"312321312"}

вот параметр, который я получил при доступе к моему методу

message"=>{"param"=>[{"name"=>"id", "value"=>"2373084120100804002252"}, {"name"=>"messageType", "value"=>"SMS"}, {"name"=>"target", "value"=>"23730841"}, {"name"=>"source", "value"=>"09156490046"}, {"name"=>"msg", "value"=>"Hello world via iPhone"}, {"name"=>"udh", "value"=>nil}]}

Ответы [ 3 ]

58 голосов
/ 04 августа 2010

Существует много библиотек разбора Ruby XML. Однако, если ваш XML небольшой, вы можете использовать расширение ActiveSupport Hash .from_xml:

Hash.from_xml(x)["message"]["param"].inject({}) do |result, elem| 
  result[elem["name"]] = elem["value"] 
  result 
end
# => {"msg"=>"xxxxxxxxxxxxx", "messageType"=>"SMS", "udh"=>nil, "id"=>"xxxxxxxxxxxxxx", "target"=>"xxxxxxxxxxxxx", "source"=>"xxxxxxxxxxx"}
11 голосов
/ 04 августа 2010

Вы должны использовать Nokogiri для анализа XML.Это довольно быстро.

1 голос
/ 04 августа 2010

Кроме того, попробуйте проверить REXML для более сложных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...