¿Cómo parametrizo la sintaxis de grails/groovy xml MarkupBuilder .builder?

Esta es mi primera pregunta sobre SO, así que sé amable. Estoy escribiendo un código genial para generar xml usando MarkupBuilder. El problema es que tengo que generar muchos xml similares para muchos tipos de productos diferentes y el código se volverá enorme si no puedo parametrizarlo. Mostrándote podría ayudarte a entender mejor:

def writer = new StringWriter()

def builder = new groovy.xml.MarkupBuilder(writer)

builder.'cr:request'('xmlns:prodType': 'http://www.myurl/ProductType', 'xmlns:cr': 'http://www.myurl/customerRequest')
{

...
// Bla bla lots of elements and attributes
...

builder.'prodType:ProductGroupName'(ID:"IDPRD"+itemCount, internalID:internalID)
{

 productGroup("PGroup")

 productName("PName")

 ProductSpecificDetails()
 {
   param("paramA")

   stringValue("valA")

   param("paramB")

   stringValue("valB")

   ...

Estoy tratando de parametrizar 'prodType:ProductGroupName' o incluso solo ProductGroupName en el código anterior. Esto significa que me permitiré pasar varios valores para esto junto con la lista de parámetros para generar xml dinámicamente para diferentes productos.

Buscando en línea, intenté rodear ProductGroupName con ${} y también lo pasé como un mapa [:], pero hasta ahora fue en vano.

¿Alguien sabe cómo puedo lograr esto?

Cualquier ayuda es muy apreciada.

Gracias, Paul.

preguntado el 22 de mayo de 12 a las 16:05

1 Respuestas

Suponiendo que tienes una variable llamada productGroupName, debería poder usar (tenga en cuenta las comillas dobles):

builder."prodType:$productGroupName"(ID:"IDPRD$itemCount", internalID:internalID)

¿Es eso lo que querías decir?

contestado el 22 de mayo de 12 a las 16:05

Doh lol Intenté todo menos eso y me estaba mirando directamente a la cara :-) Eso es genial. ¡Aún me estoy familiarizando con Groovy! ¡Gracias por la ayuda y la rápida respuesta! - Paul

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.