2011-08-09 44 views
2

我使用Savon的SOAP请求,并在一些地方的SOAP请求XML的,我需要生成这段代码:萨翁:XML标签阵列

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

什么是做到这一点的最好办法?

+1

我想你会需要再解释一些。尝试展示你已经尝试过的方式,以及它如何不起作用,人们可能会帮助你更多。 – Crisfole

+1

在问题中增加了更多信息,以便其他人不会对其投票。 – rubiii

回答

3

我已经找到了解决办法。

soap.body = { 
    #... other tags 
    "content" => { 
     "item" => ["", "", ""], 
     :attributes! => { 
      "item" => { 
       "a" => ["1", "2", "3"], 
       "b" => ["0", "0", "0"] 
      } 
     } 
    } 
    #... other tags  
} 
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 
+0

不,不,我需要把东西放在soap.body内。因为我已经有了一个使用哈希的结构化XML。 – ildyone

+0

然后请添加您当前拥有的结构,或者您需要的结构以便能够回答问题。 – Olives

1

Savon v0.9.7附带了生成器的改进支持,我会建议使用它,而不是试图通过哈希强制属性,因为它的方式更容易阅读:

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