2011-03-22 97 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 
相关问题