【问题标题】:Parsing Grape params in an XML request with complex nested body including attributes解析具有复杂嵌套主体(包括属性)的 XML 请求中的葡萄参数
【发布时间】:2015-11-03 00:44:33
【问题描述】:

我正在尝试用 Grape 来实现这一目标。我需要发送相对复杂的 XML 主体,包括元素属性,如本示例所示:

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

在将 XML 转换为 JSON(这里只是为 ruby​​)时,我正在尝试按照流行的约定定义嵌套参数,如下所示:

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 :__text, type: String
      end
    end
  end
end

但显然 XML 解析器没有遵循这种基于下划线的约定并抛出错误消息:

[Travelers][Traveler][AnonymousTraveler][PTC][_Quantity] is missing
[Travelers][Traveler][AnonymousTraveler][PTC][__text] is missing

关于如何拦截 XML 正文参数解析器并包含此约定逻辑的任何线索?

【问题讨论】:

    标签: ruby xml grape grape-api


    【解决方案1】:

    发现我没有遵循正确的约定。 Nokogiri 解析器遵循这个:

    requires :PTC, type: Hash do
      requires :Quantity, type: Integer
      requires :__content__, type: String
    end
    

    这意味着属性被解析为普通子元素,元素值或文本被解析为称为__content__的子元素。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      相关资源
      最近更新 更多