如何避免使用MarkupBuilder搞乱外围值?

时间:2011-09-15 20:55:56

标签: groovy gradle

我需要在xml中使用名为file的元素,但是gradle项目有一个名为file的属性,而是调用它。围绕这个最好的方法是什么?

import groovy.xml.MarkupBuilder

task test {
  def writer = new StringWriter()
  def xml = new MarkupBuilder(writer)
  xml.elem1(test: 'fest') {
    elem2(a: 'b')
    file(c: 'd')
    elem4(e: 'f')
  }
  println(writer)
}

2 个答案:

答案 0 :(得分:2)

你应该可以这样做:

xml.file( c: 'd' )

答案 1 :(得分:2)

您应该能够使用'delegate'变量,该变量在每个XML元素的代码块中自动可用。

例如:

import groovy.xml.MarkupBuilder

task test {
  def writer = new StringWriter()
  def xml = new MarkupBuilder(writer)
  xml.elem1(test: 'fest') {
    elem2(a: 'b')
    delegate.file(c: 'd')
    elem4(e: 'f')
  }
  println(writer)
}