0

我对以下场景有疑问:

-- 我有一个 GPathResult “body”,我想在其中添加更多 xml(节点和子节点) -- 有些部分很常见,所以我试图将它们保存在外部封闭“commonNode”中,我可以在任何需要的地方插入

// some more code here to get body

def commonNode = {
return {
  node2() {
     child("childValue")
   }
 }
}

body.appendNode(
 {
   node1("value1")
   commonNode()
   node3("value3")
 }
)

在我调用 XmlUtil.serialize(body) 之后我想要得到的是:

...
 <body>
  <node1>value</node1>
  <node2>
   <child>childValue</child>
  </node2>
  <node3>value3</node3>
 <body>
...

但是结果中完全缺少结构,所以我猜我将外部闭包称为“commonNode()”的方式有问题。

希望有人有答案。如果您需要更多详细信息,请告诉我。

4

1 回答 1

2

这有效:

import groovy.xml.*

def xml = '<body/>'

def body = new XmlSlurper().parseText( xml )

def commonNode = { 
    node2 {
        child "childValue"
    }
}

body.appendNode { 
    node1 "value1"
    commonNode.delegate = delegate
    commonNode()
    node3 "value3"
}

println XmlUtil.serialize( body )
于 2013-09-26T10:57:01.933 回答