2012-05-22 58 views
0

這是我的第一個問題,所以要溫柔。我正在編寫一些groovy代碼來使用MarkupBuilder生成xml。問題是,我必須爲許多不同的產品類型生成許多類似的xml,如果我無法對其進行參數化,代碼將變得非常龐大。顯示你可能會幫助你更好地理解:如何參數化grails/groovy xml MarkupBuilder .builder語法?

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") 

    ... 

我試圖參數:上面的「prodType ProductGroupName」,甚至只是ProductGroupName中的代碼。這意味着我將允許我爲此連同param列表傳遞各種值,以便爲不同的產品動態生成xml。

在網上看我已經嘗試圍繞ProductGroupName與$ {},我也將它作爲地圖[:]傳遞,但迄今爲止無濟於事。

有誰知道我該如何做到這一點?

任何幫助,非常感謝。

謝謝, 保羅。

回答

1

假設你有一個名爲productGroupName變量,你應該能夠使用(注意雙引號):

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

那是你的意思?

+0

Doh哈哈,我嘗試了一切,但它並且正在凝視着我的臉:-)這太棒了。仍然掌握groovy!感謝您的幫助和快速響應! – Paul