0

我正在使用这样的闭包构建 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)
}

我该怎么做?

4

2 回答 2

1

请参阅: 使用 Groovy 的 MarkupBuilder 创建 XML。特别是关于“命名空间感知示例”的部分。

基本上,你就像 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 语法命名的变量名称的方式。有关更多信息,请参阅此帖子

于 2013-11-07T18:16:47.220 回答
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为你添加它,我相信......

于 2013-11-07T16:54:12.260 回答