Rails XML解析
任何人都可以告诉我如何解决这个问题。
messageType SMS id xxxxxxxxxxxxxx source xxxxxxxxxxx target xxxxxxxxxxxxx msg xxxxxxxxxxxxx udh
我无法控制这个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}]}
有很多Ruby XML解析库。 但是,如果您的XML很小,则可以使用ActiveSupport哈希扩展“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”}
您应该使用Nokogiri来解析xml。 它非常快。
另外,请尝试检查REXML以查找更复杂的问题。
- 我应该在Heroku上部署我的Ruby on Rails应用程序
- 带有PostgreSQL的Rails 3.1:GROUP BY必须在聚合函数中使用
- Rails 3.1资产管道 – 为什么我的图像不能预编译用于生产?
- Paperclip和Amazon S3问题
- 如何通过link_to helper从rails中的视图传递参数到控制器操作
- collection_select给出了ActiveRecord :: AssociationTypeMismatch
- Ruby on Rails,如何确定请求是由机器人还是搜索引擎蜘蛛制作的?
- 升级到bootstrap-sass 3.2.0的问题
- 如何在rails中命名路由