2011-08-09 48 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