我目前正在使用Builder gem for Ruby为我的应用程序中的资源生成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。
答案 0 :(得分:4)
这样做:
builder.tag!(top_level_node) do |top_level_node|
end