2014-10-09 81 views
0

我正在從薩翁(WSDL Web服務)客戶端的響應,薩翁響應無法轉換爲正確的XML

:departure_airport=>{:@location_code=>"MAA", :@code_context=>"IATA"} 

當我嘗試轉換response.to_xml,我得到

預期輸出:

我想這個迴應正確的XML,如果@意思,它應該是屬性,否則innexText

<departure_airport location_code="MAA" code_context="IATA" /> 

實際輸出:

<departure_airport> 
    <location_code>MAA</location_code> 
    <code_context>IATA</code_context> 
</departure_airport> 

幫助我獲得的實際響應。我正在使用Nokogiri來解析XML響應。


完全響應:

[{: flight_segment => {: departure_airport => {: @location_code => "MAA", : @code_context => "IATA" 
     }, : arrival_airport => {: @location_code => "DEL", : @code_context => "IATA" 
     }, : operating_airline => "JetLite India", : equipment => "73G", : marketing_airline => "JetLite India", : requested_cabin => {: @cabin_type => "Economy" 
     }, : booking_class_avails => {: booking_class_avail => {: @res_book_desig_code => "O", : @res_book_desig_quantity => "9" 
      }, : @cabin_type => "Economy" 
     }, : stop_location => {: @location_code => "BLR", : @code_context => "iata" 
     }, : @departure_date_time => "2014-10-10T08:20:00", : @arrival_date_time => "2014-10-10T12:30:00", : @stop_quantity => "1", : @flight_number => "4607", : @res_book_desig_code => "O", : @departure_day => "Fri" 
    }, : booking_reference_id => {: company_name => "Amadeus", : @type => "5", : @id => "1", : @id_context => "1A", : @sell_reference => "CPTS128TS", : @ticket_reference => "CPTS12801" 
    }, : @ts_duration => "15000000", : @ref_number => "1" 
}, {: flight_segment => {: departure_airport => {: @location_code => "DEL", : @code_context => "IATA" 
     }, : arrival_airport => {: @location_code => "MAA", : @code_context => "IATA" 
     }, : operating_airline => "Jet Airways", : equipment => "73G", : marketing_airline => "Jet Airways", : requested_cabin => {: @cabin_type => "Economy" 
     }, : booking_class_avails => {: booking_class_avail => {: @res_book_desig_code => "O", : @res_book_desig_quantity => "9" 
      }, : @cabin_type => "Economy" 
     }, : stop_location => {: @location_code => "BLR", : @code_context => "iata" 
     }, : @departure_date_time => "2014-10-10T17:00:00", : @arrival_date_time => "2014-10-10T21:10:00", : @stop_quantity => "1", : @flight_number => "7075", : @res_book_desig_code => "O", : @departure_day => "Fri" 
    }, : booking_reference_id => {: company_name => "Amadeus", : @type => "5", : @id => "2", : @id_context => "1A", : @sell_reference => "CPTS128TS", : @ticket_reference => "CPTS12801" 
    }, : @ts_duration => "15000000", : @ref_number => "2" 
}] 
+0

什麼是確切的響應格式或張貼類似的參考 – Bijendra 2014-10-09 08:00:39

+0

@Bijendra我發佈了完整的答覆。 – 2014-10-09 08:55:54

回答

0

有冒號(:)和完整的響應散列鍵之間的空間。我不知道,如果它出現在複製,但是當我刪除了空間和嘗試:

json_data = [{:flight_segment=>{:departure_airport=>{:@location_code=>"MAA", :@code_context=>"IATA"}, :arrival_airport=>{:@location_code=>"DEL", :@code_context=>"IATA"}, :operating_airline=>"JetLite India", :equipment=>"73G", :marketing_airline=>"JetLite India", :requested_cabin=>{:@cabin_type=>"Economy"}, :booking_class_avails=>{:booking_class_avail=>{:@res_book_desig_code=>"O", :@res_book_desig_quantity=>"9"}, :@cabin_type=>"Economy"}, :stop_location=>{:@location_code=>"BLR", :@code_context=>"iata"}, :@departure_date_time=>"2014-10-10T08:20:00", :@arrival_date_time=>"2014-10-10T12:30:00", :@stop_quantity=>"1", :@flight_number=>"4607", :@res_book_desig_code=>"O", :@departure_day=>"Fri"}, :booking_reference_id=>{:company_name=>"Amadeus", :@type=>"5", :@id=>"1", :@id_context=>"1A", :@sell_reference=>"CPTS128TS", :@ticket_reference=>"CPTS12801"}, :@ts_duration=>"15000000", :@ref_number=>"1"}] 

json_data.to_xml工作正常。

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<objects type=\"array\">\n <object>\n <flight-segment>\n  <departure-airport>\n  <@location-code>MAA</@location-code>\n  <@code-context>IATA</@code-context>\n  </departure-airport>\n  <arrival-airport>\n  <@location-code>DEL</@location-code>\n  <@code-context>IATA</@code-context>\n  </arrival-airport>\n  <operating-airline>JetLite India</operating-airline>\n  <equipment>73G</equipment>\n  <marketing-airline>JetLite India</marketing-airline>\n  <requested-cabin>\n  <@cabin-type>Economy</@cabin-type>\n  </requested-cabin>\n  <booking-class-avails>\n  <booking-class-avail>\n   <@res-book-desig-code>O</@res-book-desig-code>\n   <@res-book-desig-quantity>9</@res-book-desig-quantity>\n  </booking-class-avail>\n  <@cabin-type>Economy</@cabin-type>\n  </booking-class-avails>\n  <stop-location>\n  <@location-code>BLR</@location-code>\n  <@code-context>iata</@code-context>\n  </stop-location>\n  <@departure-date-time>2014-10-10T08:20:00</@departure-date-time>\n  <@arrival-date-time>2014-10-10T12:30:00</@arrival-date-time>\n  <@stop-quantity>1</@stop-quantity>\n  <@flight-number>4607</@flight-number>\n  <@res-book-desig-code>O</@res-book-desig-code>\n  <@departure-day>Fri</@departure-day>\n </flight-segment>\n <booking-reference-id>\n  <company-name>Amadeus</company-name>\n  <@type>5</@type>\n  <@id>1</@id>\n  <@id-context>1A</@id-context>\n  <@sell-reference>CPTS128TS</@sell-reference>\n  <@ticket-reference>CPTS12801</@ticket-reference>\n </booking-reference-id>\n <@ts-duration>15000000</@ts-duration>\n <@ref-number>1</@ref-number>\n </object>\n</objects>\n" 
+0

我想要預期的迴應..(如果@意思,它應該是屬性,否則innexText)。正如你所說,它的工作原理。但我想把值作爲標籤的屬性。 – 2014-10-09 12:17:06