[フレーム]
Last Updated: March 02, 2016
·
1.006K
· xurde

Parsing Grape params in an XML request with complex nested body including attributes

While trying to build an Grape-based API with complex XML body requests in the requests, I came to the point of figuring out how to reach XML attributes in a sample request like this.

<Travelers>
 <Traveler>
 <AnonymousTraveler>
 <PTC Quantity="1">ADT</PTC>
 </AnonymousTraveler>
 </Traveler>
</Travelers>

XML attributes when using Nokogiri are parsed as normal child elements, and the content (or text) of the element itself is parsed as an String named __content__.

So Grape parameters block should look like this in order to parse properly params.

optional :Travelers, type: Array do
 requires :Traveler, type: Hash do
 optional :AnonymousTraveler, type: Hash do
 requires :PTC, type: Hash do
 requires :Quantity, type: Integer
 requires :__content__, type: String
 end
 end
 end
end

I hope it helps.

AltStyle によって変換されたページ (->オリジナル) /