Groovy:向xml添加属性和命名空间

时间:2013-11-07 16:39:36

标签: groovy

我正在使用像这样的Closures构建Xml构建:

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

我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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为你添加它我相信......