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

调整LINQ读取XML结构,实现多Condition组合同步校验构建结果

解决方案:调整LINQ查询适配XML结构变更并实现多Condition分组校验

新旧XML结构示例

旧格式

<BuildMachine name="MachineA">
  <Process name="BuildProcess1">
    <Conditions>
      <SuccessCriteria type="Contains">Build succeeded</SuccessCriteria>
      <Condition>Log line 1</Condition>
      <Condition>Log line 2</Condition>
    </Conditions>
  </Process>
</BuildMachine>

新格式(调整后)

<BuildMachine name="MachineA">
  <Process name="BuildProcess1">
    <SuccessCriteria type="Contains">Build succeeded</SuccessCriteria>
    <Conditions>
      <Condition>Log line 1</Condition>
      <Condition>Log line 2</Condition>
    </Conditions>
  </Process>
</BuildMachine>

修改后的LINQ查询代码

using System.Linq;
using System.Xml.Linq;

// 加载目标XML文件
var validationDoc = XDocument.Load("BuildValidationRules.xml");

// 查询并封装关联数据,实现同一Process下的Condition分组
var validationRules = validationDoc.Descendants("BuildMachine")
    .SelectMany(machineNode => machineNode.Descendants("Process")
        .Select(processNode => new
        {
            BuildMachine = machineNode.Attribute("name")?.Value,
            ProcessName = processNode.Attribute("name")?.Value,
            SuccessRule = new
            {
                MatchType = processNode.Element("SuccessCriteria")?.Attribute("type")?.Value,
                TargetText = processNode.Element("SuccessCriteria")?.Value.Trim()
            },
            // 收集当前Process下的所有校验条件
            CheckConditions = processNode.Descendants("Condition")
                .Select(cond => cond.Value.Trim())
                .ToList()
        }))
    .ToList();

关键改动说明

  • 层级遍历逻辑调整:直接从Process节点读取同级的SuccessCriteria,而非从原Conditions节点内读取,适配新的XML结构
  • Condition分组实现:通过Descendants("Condition")批量收集同一Process下的所有校验条件,避免拆分单独行
  • 全量关联数据保留:将构建机器名、进程名、成功校验规则与条件列表绑定,确保日志校验时所有关联数据完整可用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:27:42