I have an xml request i need to create another xml with request with this request without certain child tags
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
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? also how to remove the tag <RollNumber>21</RollNumber>
and insert new tag <Rank>2</Rank>
You can use replaceNode()
on the node that is needed to be removed. It applies to all Teachers
nodes under Classes
parent.
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 )