简体   繁体   English

Groovy:XMl:如何在chid标签中删除和替换子标签

[英]Groovy:XMl: How to remove and replace child tag with in a chid tag

I have an xml request i need to create another xml with request with this request without certain child tags 我有一个xml请求,我需要使用该请求创建另一个xml,而没有某些子标记

String requestXml = """
<School>
    <Classes>
        <Class>
           <Teachers>
              <Name>Rama</Name>
              <Name>Indhu</Name>
           </Teachers>
           <Name>Anil</Name>
           <RollNumber>16</RollNumber>
        </Class>
        <Class>
            <Teachers>
              <Name>Nisha</Name>
              <Name>Ram</Name>
           </Teachers>
           <Name>manu</Name>
           <RollNumber>21</RollNumber>
        </Class>
   </Classes>
</School>
""" 

this is the request which i have,i need to create another request with this one and it would be like this in myRequest 这是我所拥有的请求,我需要用这个请求创建另一个请求,这就像在myRequest中一样

String myRequest = """
<School>
   <Classes>
      <Class>
         <Name>Anil</Name>
         <RollNumber>16</RollNumber>
      </Class>
      <Class>
         <Name>manu</Name>
         <RollNumber>21</RollNumber>
      </Classes>
</School>
"""

how can i achive this by using 我怎样才能通过使用

parsed = new XmlSlurper (false, false).parseText( requestXml )

String myRequest = new StreamingMarkupBuilder().bind {
    mkp.yield parsed.Classes.children()
}

How can i remove the <Teachers> tag? 如何删除<Teachers>标签? also how to remove the tag <RollNumber>21</RollNumber> and insert new tag <Rank>2</Rank> 还有如何删除标签<RollNumber>21</RollNumber>并插入新标签<Rank>2</Rank>

You can use replaceNode() on the node that is needed to be removed. 您可以在需要删除的节点上使用replaceNode() It applies to all Teachers nodes under Classes parent. 它适用于“ Classes父级下的所有“ Teachers节点。

import groovy.xml.XmlUtil

def xml = '''
<School>
    <Classes>
        <Class>
           <Teachers>
              <Name>Rama</Name>
              <Name>Indhu</Name>
           </Teachers>
           <Name>Anil</Name>
           <RollNumber>16</RollNumber>
        </Class>
        <Class>
            <Teachers>
              <Name>Nisha</Name>
              <Name>Ram</Name>
           </Teachers>
           <Name>manu</Name>
           <RollNumber>21</RollNumber>
        </Class>
   </Classes>
</School>
'''

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

//Remove all Teachers node
parsed.Classes.Class.Teachers.replaceNode { }

XmlUtil.serialize( parsed )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM