You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Groovy代码为XML每个DataRow补全缺失Field节点?

解决嵌套XML中DataRow缺失节点的补充问题

需求说明

输入是包含多个DataRow节点的DataTable结构XML,部分DataRow缺失Field2、Field3节点;需要确保输出的每个DataRow都包含Field1、Field2、Field3节点,缺失的节点以空元素形式补充。

Groovy实现代码

下面是适配嵌套结构的Groovy代码,使用XmlSlurper处理XML,遍历每个DataRow并补充缺失字段:

import groovy.xml.XmlSlurper
import groovy.xml.XmlNodePrinter

// 示例输入XML
def inputXml = '''<DataTable>
    <DataRow>
        <Field1>Value1</Field1>
    </DataRow>
    <DataRow>
        <Field1>Value2</Field1>
        <Field2>Value2-2</Field2>
    </DataRow>
    <DataRow>
        <Field3>Value3-3</Field3>
    </DataRow>
</DataTable>'''

// 解析XML,保留原格式的空白字符
def xml = new XmlSlurper().parseText(inputXml)
xml.keepWhitespace = true

// 定义必须存在的字段列表
def requiredFields = ['Field1', 'Field2', 'Field3']

// 遍历每个DataRow节点
xml.DataRow.each { row ->
    requiredFields.each { field ->
        // 检查当前DataRow是否已存在该字段节点
        if (!row."$field".size()) {
            // 不存在则添加空节点
            row.appendNode(field, '')
        }
    }
}

// 格式化输出处理后的XML
def printer = new XmlNodePrinter(new PrintWriter(System.out))
printer.preserveWhitespace = true
printer.print(xml)

代码说明

  • 使用XmlSlurper解析XML,设置keepWhitespace保留原文档的空白格式,避免输出混乱
  • 定义requiredFields数组统一管理需要检查的字段,方便后续扩展
  • 遍历每个DataRow节点,对每个必填字段判断是否存在:通过row."$field".size()判断节点数量,为0则说明缺失
  • 用appendNode方法添加空内容的字段节点
  • 使用XmlNodePrinter格式化输出,保证XML结构可读性

示例输出

运行上述代码后,输出的XML会是:

<DataTable>
    <DataRow>
        <Field1>Value1</Field1>
        <Field2></Field2>
        <Field3></Field3>
    </DataRow>
    <DataRow>
        <Field1>Value2</Field1>
        <Field2>Value2-2</Field2>
        <Field3></Field3>
    </DataRow>
    <DataRow>
        <Field3>Value3-3</Field3>
        <Field1></Field1>
        <Field2></Field2>
    </DataRow>
</DataTable>

如果需要调整字段的顺序,可以修改requiredFields的顺序,或者在添加节点时指定插入位置(比如插入到指定节点之后)。

内容的提问来源于stack exchange,提问作者mabt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:30:57