Savon:XML标签数组

时间:2011-08-09 19:40:51

标签: ruby xml soap savon

我正在使用Savon进行SOAP请求,而在SOAP请求XML的某个地方,我需要生成这段代码:

<content>
  <item a="1" b="0"/>
  <item a="2" b="0"/>
  <item a="3" b="0"/>
</content>

最好的方法是什么?

3 个答案:

答案 0 :(得分:3)

我找到了解决方案。

soap.body = {  
    #... other tags  
    "content" => {  
        "item" => ["", "", ""],  
        :attributes! => {  
            "item" => {  
                "a" => ["1", "2", "3"],  
                "b" => ["0", "0", "0"]  
            }  
        }  
    }
    #... other tags    
}  

答案 1 :(得分:1)

Savon v0.9.7增加了对Builder的支持,我建议使用它而不是试图通过Hashes强制属性,因为它更具可读性:

soap.body do |xml|
  xml.content do
    xml.item(:a => "1", :b => "0")
    xml.item(:a => "2", :b => "0")
    xml.item(:a => "3", :b => "0")
  end
end

答案 2 :(得分:0)

您可以执行以下操作:

def content
  xml = Builder::XmlMarkup.new
  xml.content do
    xml.item(:a => "1", :b => "0")
    xml.item(:a => "2", :b => "0")
    xml.item(:a => "3", :b => "0")
  end
end