2013-11-07 2 views

ответ

0

Вы имеете в виду вот это?

import groovy.xml.* 

def buildRequestXml() { 
    def requestXml = { //add namespace and version attribute on root 
     mkp.xmlDeclaration() 
     root { 
      FirstName("Name1") 
      LastName("Name2") 
      DOB("12/19/1983") //add attribute format="mm/dd/yyyy" 
     } 
    } 
    new StreamingMarkupBuilder().bind(requestXml) 
} 

println buildRequestXml() 

Или XmlUtil.serialize добавляет это для вас, я считаю ...

+0

Могу ли я использовать 'mkp' просто так, не объявляя его нигде? –

+0

Это часть streamingmarkupbuilder, которая является делегатом закрытия, когда она передана для связывания. –

1

Пожалуйста, см: Creating XML using Groovy's MarkupBuilder. В частности, раздел «Пример использования пространства имен».

В принципе, вы делаете это так же, как tim_yates вам сказал выше, но поставить пространство имен/префикс привязок от руки:

import groovy.xml.* 

def buildRequestXml() { 
    def requestXml = { //add namespace and version attribute on root 
     mkp.xmlDeclaration() 
     'test:root'('xmlns:test': 'urn:blah') { 
      FirstName("Name1") 
      LastName("Name2") 
      DOB("12/19/1983") //add attribute format="mm/dd/yyyy" 
     } 
    } 
    new StreamingMarkupBuilder().bind(requestXml) 
} 

println buildRequestXml() 

Это специальный апостроф синтаксис, который позволяет поставить двоеточие в имени , Вот как вы даете имена переменных в groovy, которые не являются действительными синтаксисом java. Для получения дополнительной информации см. this post.

+0

Вы также можете использовать двойные кавычки :-) –

Смежные вопросы