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