Как избежать путаницы значений внешней области с использованием MarkupBuilder? - PullRequest
3 голосов
/ 16 сентября 2011

Мне нужен элемент с именем file в моем xml, однако у 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 ]

2 голосов
/ 16 сентября 2011

Вы должны иметь возможность использовать переменную «делегат», которая автоматически становится доступной в кодовом блоке каждого элемента 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)
}
2 голосов
/ 16 сентября 2011

Вы должны быть в состоянии сделать:

xml.file( c: 'd' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...