0
XML로 POST 요청에서 컨트롤러의 XML 데이터를 가져 오는 데 문제가 있습니다. 문자열 변수에 XML을 저장하면 Nokogiri와 함께 irb에서 XML 데이터를 파싱 할 수 있습니다. 그러나 POST 요청에서 XML 데이터가 제공되는 매개 변수가없는 것 같습니다. XML 데이터를 잡는 방법에 대한 올바른 방향을 제시하는 데 도움이 될 것입니다!레일 컨트롤러에서 XML 데이터를 가져올 수 없습니다.
Started POST "/vz_api" for 127.0.0.1 at 2014-06-24 10:59:07 -0400
Processing by LocationsController#vz_api as */*
f = '<?xml version="1.0" encoding="UTF-8" standalone="no"?><NetworkfleetMessage Type="GPS"><VIN>1M2AXO4C5CM014389</VIN><FleetId>47790</FleetId><MsgId>25195315419</MsgId><MessageTime>2014-06-24 10:09:46 GMT</MessageTime><MessageTimeUTF>1403604586</MessageTimeUTF><DeliveryStatus>Current</DeliveryStatus><GPSFixes NumFixes="1"><GPSFix><FixTime>2014-06-24 10:08:59 GMT</FixTime><FixTimeUTF>1403604539</FixTimeUTF><Latitude>40.83705</Latitude><Longitude>-73.87563</Longitude><Ignition>On</Ignition><Speed Type="Avg" Units="MPH">0</Speed><Speed Type="Inst" Units="MPH">0</Speed><Speed Type="Max" Units="MPH">0</Speed><Odometer>51525.976</Odometer><AgeInMiles>0.000</AgeInMiles></GPSFix></GPSFixes></NetworkfleetMessage>'
2.0.0-p353 :003 > require 'nokogiri'
=> false
2.0.0-p353 :004 > doc = Nokogiri::XML(f)
=> #<Nokogiri::XML::Document:0x8270cf4c name="document" children=[#<Nokogiri::XML::Element:0x8270cbdc name="NetworkfleetMessage" attributes=[#<Nokogiri::XML::Attr:0x8270cb78 name="Type" value="GPS">] children=[#<Nokogiri::XML::Element:0x8270c5c4 name="VIN" children=[#<Nokogiri::XML::Text:0x8270c31c "1M2AXO4C5CM014389">]>, #<Nokogiri::XML::Element:0x8270c1a0 name="FleetId" children=[#<Nokogiri::XML::Text:0x82710638 "47790">]>, #<Nokogiri::XML::Element:0x82711f24 name="MsgId" children=[#<Nokogiri::XML::Text:0x82711c04 "25195315419">]>, #<Nokogiri::XML::Element:0x827119c0 name="MessageTime" children=[#<Nokogiri::XML::Text:0x82711768 "2014-06-24 10:09:46 GMT">]>, #<Nokogiri::XML::Element:0x827115ec name="MessageTimeUTF" children=[#<Nokogiri::XML::Text:0x827113a8 "1403604586">]>, #<Nokogiri::XML::Element:0x82711204 name="DeliveryStatus" children=[#<Nokogiri::XML::Text:0x82710ffc "Current">]>, #<Nokogiri::XML::Element:0x82710e80 name="GPSFixes" attributes=[#<Nokogiri::XML::Attr:0x82710e1c name="NumFixes" value="1">] children=[#<Nokogiri::XML::Element:0x8271096c name="GPSFix" children=[#<Nokogiri::XML::Element:0x82710688 name="FixTime" children=[#<Nokogiri::XML::Text:0x82710444 "2014-06-24 10:08:59 GMT">]>, #<Nokogiri::XML::Element:0x8271023c name="FixTimeUTF" children=[#<Nokogiri::XML::Text:0x82714620 "1403604539">]>, #<Nokogiri::XML::Element:0x82715f70 name="Latitude" children=[#<Nokogiri::XML::Text:0x82715c00 "40.83705">]>, #<Nokogiri::XML::Element:0x82715a84 name="Longitude" children=[#<Nokogiri::XML::Text:0x827158a4 "-73.87563">]>, #<Nokogiri::XML::Element:0x827156c4 name="Ignition" children=[#<Nokogiri::XML::Text:0x827154bc "On">]>, #<Nokogiri::XML::Element:0x82715318 name="Speed" attributes=[#<Nokogiri::XML::Attr:0x827152b4 name="Type" value="Avg">, #<Nokogiri::XML::Attr:0x827152a0 name="Units" value="MPH">] children=[#<Nokogiri::XML::Text:0x82714bc0 "0">]>, #<Nokogiri::XML::Element:0x8271497c name="Speed" attributes=[#<Nokogiri::XML::Attr:0x827148b4 name="Type" value="Inst">, #<Nokogiri::XML::Attr:0x827148a0 name="Units" value="MPH">] children=[#<Nokogiri::XML::Text:0x827183c4 "0">]>, #<Nokogiri::XML::Element:0x82719fbc name="Speed" attributes=[#<Nokogiri::XML::Attr:0x82719ecc name="Type" value="Max">, #<Nokogiri::XML::Attr:0x82719eb8 name="Units" value="MPH">] children=[#<Nokogiri::XML::Text:0x82719814 "0">]>, #<Nokogiri::XML::Element:0x82719670 name="Odometer" children=[#<Nokogiri::XML::Text:0x82719490 "51525.976">]>, #<Nokogiri::XML::Element:0x82719314 name="AgeInMiles" children=[#<Nokogiri::XML::Text:0x8271910c "0.000">]>]>]>]>]>
2.0.0-p353 :005 > doc.xpath("//VIN").inner_text
=> "1M2AXO4C5CM014389"