Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I generate a dynamic tag with Nokogiri::XML::Builder?

Tags:

ruby

nokogiri

I am looping through a set of tag names in an array, and I want to print each one using builder without resorting to the manual XML of the "<<" method.

I thought that:

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

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

would do it, but it just creates tags with the name "tag", and puts the tag variable as the text value of the element.

Can anyone help? This seems like it should be relatively simple, I have just had trouble finding the answer on search engines. I am probably not asking the question the right way.

like image 971
AKWF Avatar asked Mar 22 '11 15:03

AKWF


2 Answers

Try the following. I added a root node as Nokogiri requires one if I'm not mistaken.

builder = Nokogiri::XML::Builder.new do |xml|
  xml.root do |root|
    for tag in tags
      xml.send(tag, someval)
    end
  end
end
like image 151
lebreeze Avatar answered Oct 15 '22 04:10

lebreeze


try to use method_missing

 builder = Nokogiri::XML::Builder.new do |xml|
   for tag in tags
     xml.method_missing(tag, someval)
   end
 end
like image 24
user928633 Avatar answered Oct 15 '22 04:10

user928633