动态添加属性到Builder标签

发布于 2024-11-17 02:42:50 字数 544 浏览 4 评论 0原文

这可能是一个很糟糕的标题。如果有人对如何描述这个问题有更好的想法,很高兴听到。

如果我在 Python 中使用 ElementTree 构建 XML 文档,我可以执行类似的操作,

tag = ET.SubElement(root, 'tag')
tag.set('foo', 'true')
if bar
  tag.set('baz', 'false')

但是使用 Ruby 中的 Builder,我可以了解如何设置标签属性的唯一方法是执行以下操作:

xml.tag :foo => 'true', :baz => 'false'

有没有适合我的方法在那之后稍后分配 baz ?或者我必须像这样重写整个事情:

if bar
  xml.tag :foo => 'true', :baz => 'false'
else
  xml.tag :foo => 'true', :baz => 'true'
end

That may be a shitty title. If anyone has a better idea for how to describe this question, happy to hear it.

If I'm building an XML document with ElementTree in Python, I can do something along the lines of

tag = ET.SubElement(root, 'tag')
tag.set('foo', 'true')
if bar
  tag.set('baz', 'false')

But with Builder in Ruby, The only way I can see how to set tag attributes is to do the following:

xml.tag :foo => 'true', :baz => 'false'

Is there a way for me to assign baz later after that point? Or do I have to rewrite the entire thing like so:

if bar
  xml.tag :foo => 'true', :baz => 'false'
else
  xml.tag :foo => 'true', :baz => 'true'
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤慢歌 2024-11-24 02:42:50

当您不就地更新时,代码会更清晰。为什么不是这个?

xml.tag :foo => 'true', :baz => (bar ? 'true' : 'false')

Code is more clear when you don't update in-place. Why not this?

xml.tag :foo => 'true', :baz => (bar ? 'true' : 'false')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文