Как сгенерировать динамический тег с помощью Nokogiri :: XML :: Builder? - PullRequest
5 голосов
/ 22 марта 2011

Я перебираю набор имен тегов в массиве и хочу напечатать каждое из них с помощью компоновщика, не прибегая к ручному XML метода "<<". </p>

Я думал, что:

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

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

будет делать это, но он просто создает теги с именем «тег» и помещает переменную тега в качестве текстового значения элемента.

Кто-нибудь может помочь? Похоже, это должно быть относительно просто, у меня только что были проблемы с поиском ответа в поисковых системах. Я, наверное, не правильно задаю вопрос.

Ответы [ 2 ]

10 голосов
/ 22 марта 2011

Попробуйте следующее.Я добавил корневой узел, поскольку Nokogiri требует его, если я не ошибаюсь.

builder = Nokogiri::XML::Builder.new do |xml|
  xml.root do |root|
    for tag in tags
      xml.send(tag, someval)
    end
  end
end
7 голосов
/ 08 сентября 2011

попробуйте использовать method_missing

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