xml - xmlslurper 按子值从 xml 中删除节点
问题描述
如果“field1”的值等于某个值,我需要从下面的 XML 中删除节点“行”。
<root>
<row>
<content type="application/xml">
<properties>
<field1>AAA</field1>
<field2>001</field2>
</properties>
</content>
</row>
<row>
<content type="application/xml">
<properties>
<field1>BBB</field1>
<field2>001</field2>
</properties>
</content>
</row>
<row>
<content type="application/xml">
<properties>
<field1>CCC</field1>
<field2>001</field2>
</properties>
</content>
</row></root>
我尝试了这段代码,但它使 XML 保持不变。
root.'**'.findAll { it.name() == 'row' & it.field1.text() == 'BBB'}*.replaceNode{}
我怎样才能实现它?
解决方案
def xml='''
<root>
<row>
<content type="application/xml">
<properties>
<field1>AAA</field1>
<field2>001</field2>
</properties>
</content>
</row>
<row>
<content type="application/xml">
<properties>
<field1>BBB</field1>
<field2>001</field2>
</properties>
</content>
</row>
<row>
<content type="application/xml">
<properties>
<field1>CCC</field1>
<field2>001</field2>
</properties>
</content>
</row></root>
'''
def root = new XmlSlurper().parseText(xml)
root.row.findAll { it.content.properties.field1.text()=='BBB' }*.replaceNode{}
groovy.xml.XmlUtil.serialize(root)
推荐阅读
- react-native - React-Navigation:嵌套导航器中的导航
- servicestack - Service Stack 自定义 AutoQuery
- rnn - 修改 RNN CuDNN 示例代码以使用 CUDNN_DATA_INT8
- rest - SOAPUI:需要示例 REST API 以使用 SOAPUI 工具进行测试
- itext - iText:将 pdf 字节插入打开的文档
- npm - 将入口点更改为 npm 依赖项
- sql-server - 从 Visual Basic api 读取 SQL Server 存储过程
- angular - Angular 6 SASS 嵌套在模块级别不起作用
- android - 房间迁移失败回退android
- r - 无法为 GPU 编译/安装 LightGBM