Enquanto tentava construir uma API baseada em Grape com solicitações de corpo XML complexas nas solicitações, cheguei ao ponto de descobrir como alcançar atributos XML em uma solicitação de amostra como esta.
<Travelers>
<Traveler>
<AnonymousTraveler>
<PTC Quantity="1">ADT</PTC>
</AnonymousTraveler>
</Traveler>
</Travelers>
Os atributos XML ao usar Nokogiri são analisados como elementos filho normais e o conteúdo (ou texto) do próprio elemento é analisado como uma String nomeada __content__
.
Portanto, o bloco de parâmetros Grape deve ter a seguinte aparência para analisar os parâmetros corretamente.
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
Espero que ajude.