0

这是我之前问题的延伸。如果我得到这样的输入 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

}

我正在考虑以下步骤:

  1. 分配it给局部变量。def clientInfo = it
  2. 从 中删除所有RoleTypeCT节点clientInfo。试过clientInfo.RoleTypeCT.replaceNode{}但它给了我错误。
  3. 对于 original 中的每个 RoleTypeCT it,添加RoleTypeCTclientInfo. 就像是

    it.RoleTypeCT.each { def roleType = it clientInfo.appendNode(roleType) }

如果这种方法可以,那么如何首先删除所有RoleTypeCT节点?

4

1 回答 1

1

这是删除所有RoleTypeCT节点的方法,但是我仍然担心您走错了路(请参阅问题评论)

import groovy.xml.*

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

client.RoleTypeCT*.replaceNode {}

println XmlUtil.serialize( client )
于 2013-09-26T14:33:01.017 回答