我目前正在使用 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 添加发送或调用。