繁体   English   中英

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

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

我有一个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>
""" 

这是我所拥有的请求,我需要用这个请求创建另一个请求,这就像在myRequest中一样

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

我怎样才能通过使用

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

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

如何删除<Teachers>标签? 还有如何删除标签<RollNumber>21</RollNumber>并插入新标签<Rank>2</Rank>

您可以在需要删除的节点上使用replaceNode() 它适用于“ 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