Добавление динамических элементов и атрибутов в groovy MarkupBuilder или StreamingMarkupBuilder
Я видел много примеров, используя Groovy MarkupBuilder для создания XML-документа, но все они, похоже, используют статические атрибуты для каждого элемента в документе (имена атрибутов известны во время компиляции). Что делать, если я пытаюсь создать документ XML, где имена атрибутов неизвестны до выполнения? Я еще не понял, что синтаксис требует решения такой проблемы.
Ответы
Ответ 1
Карта с именами атрибутов в виде ключей должна это сделать. Вам нужно обернуть ключ в фигурные скобки, чтобы Groovy знал, что вы хотите использовать значение a
, а не ключ a
:
import groovy.xml.MarkupBuilder
new MarkupBuilder().root {
def a = 'dynAttr'
node( [ (a):'woo' ] )
}
Генерирует:
<root>
<node dynAttr='woo' />
</root>