2015-11-03 32 views
0

我试图用葡萄来实现这一点。我需要发送相对复杂的XML机构,包括元素属性,像这样显示样品中:解析包含属性的复杂嵌套体的XML请求中的葡萄参数

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

而且我试图定义以下时,将XML转换成JSON(这里只是红宝石)一个通用的惯例嵌套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 :__text, type: String 
     end 
    end 
    end 
end 

但很明显的XML解析器没有遵循这种基于强调,公约,并引发错误消息:

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

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

回答

0

发现我没有遵循正确的约定。 引入nokogiri解析器遵循此之一:

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

这意味着属性进行解析像普通孩子元素和元素值或文本被分析为子元素称为__content__

希望它有帮助。