将动态元素和属性添加到groovy MarkupBuilder或StreamingMarkupBuilder

时间:2012-10-08 21:28:53

标签: xml groovy markupbuilder

我见过许多使用Groovy的MarkupBuilder构建XML文档的例子,但它们似乎都对文档中的每个元素都使用静态属性(属性名称在编译时都是已知的)。如果我正在尝试构建一个XML文档,其中在运行时之前不知道属性名称,该怎么办?我还没有想出解决这样问题的语法要求。

1 个答案:

答案 0 :(得分:5)

属性名称为键的地图应该这样做。您需要将键包装在大括号中,以便Groovy知道您的意思是使用a的值而不是键a

import groovy.xml.MarkupBuilder

new MarkupBuilder().root {
  def a = 'dynAttr'
  node( [ (a):'woo' ] )
}

会生成:

<root>
  <node dynAttr='woo' />
</root>