使用groovy-wslite向XML节点添加属性

时间:2012-08-20 21:24:53

标签: grails groovy

我正在使用groovy-wslite对WSDL进行SOAP调用,并且需要其生成的xml节点中的一个具有属性。以下是我需要的一个例子:

<soap-env:Envelope xmlns:soap-env='http://schemas.xmlsoap.org/soap/envelope/'
  <soap-env:Header />
  <soap-env:Body>
  <getSomething id = "1">
  </getSomething>
  </soap-env:Body>
</soap-env:Envelope>

在此示例中,我需要getSomething调用才能拥有id属性。

1 个答案:

答案 0 :(得分:0)

除了将构建子元素的闭包之外,您还可以传递其键/值将成为属性的贴图。以下将生成与您拥有的SOAP请求匹配的SOAP请求。

@Grab(group='com.github.groovy-wslite', module='groovy-wslite', version='0.7.1')
import wslite.soap.*

def client = new SOAPClient('http://...')
def response = client.send {
    header
    body {
        getSomething(id:'1') {
            //more elements here if needed
        }
    }
}

Groovy的MarkupBuilder在幕后使用,因此在使用wslite生成SOAP请求时,您为MarkupBuilder找到的任何示例都应该适用。