【问题标题】:xmlslurper remove node from xml by child valuexmlslurper 按子值从 xml 中删除节点
【发布时间】:2021-01-20 13:49:30
【问题描述】:

如果“field1”的值等于某个值,我需要从下面的 XML 中删除节点“row”。

<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{}

我怎样才能实现它?

【问题讨论】:

    标签: xml groovy nodes xmlslurper


    【解决方案1】:
    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多