我有一个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>
答案 0 :(得分:0)
您可以在需要删除的节点上使用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 )