Bud*_*gie 22 ruby xml parsing ruby-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>
Run Code Online (Sandbox Code Playgroud)
我无法控制这个xml,但我希望在保存到我的数据库之前我可以使参数看起来像这样
message"=>{"msg"=>"sampler", "id"=>"1", "target"=>"23123", "source"=>"312321312"}
Run Code Online (Sandbox Code Playgroud)
这是我访问我的方法时收到的参数
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}]}
Run Code Online (Sandbox Code Playgroud)
Vla*_*anu 59
有很多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"}
Run Code Online (Sandbox Code Playgroud)
=> {"msg"=>"xxxxxxxxxxxxx","messageType"=>"SMS","udh"=> nil,"id"=>"xxxxxxxxxxxxxx","target"=>"xxxxxxxxxxxxx","source"= > "XXXXXXXXXXX"}
| 归档时间: |
|
| 查看次数: |
31816 次 |
| 最近记录: |