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

标签 xml grails groovy xml-parsing xmldocument

我有一个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() 。它适用于Teachers父项下的所有Classes节点。

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 )

关于xml - Groovy:XMl:如何在chid标签中删除和替换子标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439801/

相关文章:

xml - XSLT - 遍历所有子节点

java - 我如何更改 Spring Batch XML 中的标签名称

xml - 如何对名称中包含连字符的属性使用 groovy XMLbuilder

grails - 在GSP中嵌套grails函数调用的语法($ {remoteFunction}中的动态值作为<g:remoteLink>的参数

scala - 将 JavaScript (d3) 翻译为 Java

java - 访问现有属性返回 null

grails - 未加载Grails网址映射布局

grails - 用户名存储在连接的对象中

java - JSch 给出 Java 生成的 key 对无效的私钥错误

jenkins - 为什么 jenkinsfile 会以这种方式使用闭包?