【问题标题】:Groovy:XMl: How to remove and replace child tag with in a chid tagGroovy:XMl: 如何在 chid 标签中删除和替换子标签
【发布时间】:2014-06-19 19:49:53
【问题描述】:

我有一个 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()
}

如何删除&lt;Teachers&gt; 标签?还有如何删除标签&lt;RollNumber&gt;21&lt;/RollNumber&gt;并插入新标签&lt;Rank&gt;2&lt;/Rank&gt;

【问题讨论】:

    标签: xml grails groovy xml-parsing xmldocument


    【解决方案1】:

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

    【讨论】:

    • 谢谢.. 它有效.. 是否可以删除标签卷号并在其中添加一个新标签 2 ..?
    • parsed.Classes.Class.RollNumber.replaceNode { 'Rank' 2 }? @user3395072
    猜你喜欢
    • 2017-03-31
    • 2011-03-06
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    相关资源
    最近更新 更多