这是我之前question的扩展。 如果我像这样输入xml
<ClientInformation>
<FirstName>Steve</FirstName>
<LastName>Jobs</LastName>
<MiddleName/>
<DateOfBirth>09/18/2013</DateOfBirth>
<RoleTypeCT>OWN</RoleTypeCT>
<RoleTypeCT>IBE</RoleTypeCT>
<RoleTypeCT>Insured</RoleTypeCT>
</ClientInformation>
输出Xml应为
<ClientInformation>
<FirstName>Steve</FirstName>
<LastName>Jobs</LastName>
<MiddleName/>
<DateOfBirth>09/18/2013</DateOfBirth>
<RoleTypeCT>OWN</RoleTypeCT>
</ClientInformation>
<ClientInformation>
<FirstName>Steve</FirstName>
<LastName>Jobs</LastName>
<MiddleName/>
<DateOfBirth>09/18/2013</DateOfBirth>
<RoleTypeCT>IBE</RoleTypeCT>
</ClientInformation>
<ClientInformation>
<FirstName>Steve</FirstName>
<LastName>Jobs</LastName>
<MiddleName/>
<DateOfBirth>09/18/2013</DateOfBirth>
<RoleTypeCT>Insured</RoleTypeCT>
</ClientInformation>
Groovy代码
if(it.name()=="ClientInformation") {
println it.RoleTypeCT.size() //prints 3 on console
}
我正在考虑以下步骤:
it
分配给本地变量。 def clientInfo = it
RoleTypeCT
删除所有clientInfo
个节点。试过clientInfo.RoleTypeCT.replaceNode{}
,但它给了我错误。对于原始it
中的每个RoleTypeCT,将RoleTypeCT
添加到clientInfo
。像
it.RoleTypeCT.each {
def roleType = it
clientInfo.appendNode(roleType)
}
如果这种方法没问题那么如何在第一时间删除所有RoleTypeCT
个节点?
答案 0 :(得分:1)
以下是删除所有RoleTypeCT
节点的方法,但我仍然担心您走的路径错误(请参阅提问评论)
import groovy.xml.*
def client = new XmlSlurper().parseText( xml )
client.RoleTypeCT*.replaceNode {}
println XmlUtil.serialize( client )