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

WPF XmlNodeList多节点属性的SelectNodes查询及XPath构建需求

XPath 构建方案

需求概述

需要构建两条XPath,用于从XML中获取符合以下条件的Procedure节点的description:

  1. 该Procedure下的所有Step节点的finished属性值均为"True"
  2. 该Procedure下的仅一个Step节点的finished属性值为"True"

无效代码分析

原尝试代码:

XmlNodeList testList = doc.SelectNodes("//Procedure/description[//Step/@finished='True']");

这段代码仅能匹配包含至少一个finished="True"的Step的Procedure,无法区分“所有Step都为True”或“仅一个Step为True”的场景,不符合需求。


正确XPath实现

1. 匹配所有Step的finished属性均为"True"的Procedure的description

//Procedure[not(Step/@finished!='True')]/description

等价的直观写法:

//Procedure[count(Step) = count(Step[@finished='True'])]/description

逻辑说明:

  • 第一种写法:筛选不存在finished属性不等于"True"的Step的Procedure,即所有Step的finished均为"True"
  • 第二种写法:对比Procedure下Step的总数与finished="True"的Step数量,两者相等则说明所有Step都符合条件

2. 匹配仅一个Step的finished属性为"True"的Procedure的description

//Procedure[count(Step[@finished='True']) = 1]/description

逻辑说明:直接统计Procedure下finished="True"的Step数量,等于1的即为符合条件的节点。


示例XML(参考)

<Root>
  <Procedure>
    <description>所有步骤已完成</description>
    <Step finished="True"/>
    <Step finished="True"/>
  </Procedure>
  <Procedure>
    <description>仅一个步骤完成</description>
    <Step finished="True"/>
    <Step finished="False"/>
  </Procedure>
  <Procedure>
    <description>无步骤完成</description>
    <Step finished="False"/>
    <Step finished="False"/>
  </Procedure>
</Root>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:20:46