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以查找更复杂的问题。