Rails XML解析 [英] Rails XML parsing

查看:72
本文介绍了Rails XML解析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都可以告诉我如何解析它.

Can anybody tell me how to parse this on rails.

<?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没有控制权,但我希望在保存到数据库之前可以使参数看起来像这样

I have no control on this xml, but I hope I can make the parameter looks like this before saving to my database

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

这是我访问方法时收到的参数

here is the parameter I received when it access my method

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}]}

推荐答案

有很多Ruby XML解析库.但是,如果您的XML很小,则可以使用ActiveSupport哈希扩展 .from_xml :

There are a lot of Ruby XML parsing libraries. However, if your XML is small, you can use the ActiveSupport Hash extension .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"}

这篇关于Rails XML解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆