3

我目前正在使用 Ruby 的 Builder gem 来为我的应用程序中的资源生成 XML 表示。XML 表示具有多个结构始终相同的子节点,但顶级节点具有不同的名称,具体取决于资源的布尔属性的值。有什么方法可以动态生成构建器节点?像这样的东西(已经试过了,不起作用):

if resource.attr
  top_level_node = :ForFlowBased
else
  top_level_node = :ForNonSeamlessOffload
end

builder = Builder::XmlMarkup.new
builder.send(top_level_node). do |top_level_node|
....
end

该代码将生成一个节点<send:ForFlowBased>。同样,如果我调用builder.(top_level_node),生成的 xml 是<call:ForFlowBased>. 我希望动态地向构建器发送我想在其上调用的方法,而不向 XML 添加发送或调用。

4

1 回答 1

4

做这个:

builder.tag!(top_level_node) do |top_level_node|

end
于 2012-11-07T12:24:27.607 回答