2011-03-22 65 views
4

我正在循環訪問數組中的一組標記名稱,並且我希望使用構建器打印每個標記名,而無需訴諸「< <」方法的手動XML。如何使用Nokogiri :: XML :: Builder生成動態標籤?

我認爲:

builder = Nokogiri::XML::Builder.new do |xml| 

    for tag in tags 
    xml.tag! tag, someval 
    end 
end 

將做到這一點,但它只是創建了一個名爲標籤的「標籤」,並把標籤變量作爲元素的文本值。

誰能幫助?這似乎應該是相對簡單的,我只是無法在搜索引擎上找到答案。我可能不會以正確的方式提出這個問題。

+1

BTW,是Nokogirl或引入nokogiri? :) – 2011-03-22 15:15:10

回答

10

請嘗試以下操作。我添加了一個根節點,因爲如果我沒有弄錯,Nokogiri需要一個根節點。

builder = Nokogiri::XML::Builder.new do |xml| 
    xml.root do |root| 
    for tag in tags 
     xml.send(tag, someval) 
    end 
    end 
end 
+1

即使使用子元素塊,它也可以很好地工作!例如:x.send(:key){x.val 3} – schory 2013-08-05 11:56:11

5

嘗試使用的method_missing

builder = Nokogiri::XML::Builder.new do |xml| 
    for tag in tags 
    xml.method_missing(tag, someval) 
    end 
end