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

如何用C#判断XML文档中<c>节点是否存在并统计其数量

判断XML中<c>节点是否存在并统计数量的C#实现

问题描述

我有如下两种格式的XML:

格式1

<a>
  <b/>
</a>

格式2

<a>
  <b>
    <c>
      <c1>Data</c1>
      <c2>Data1</c2>
    </c>
  </b>
</a> 

请问如何编写C#代码判断<c>节点是否存在,若存在则统计该节点的数量?

实现方法

方法1:使用XmlDocument(传统DOM操作)

适合熟悉传统XML DOM模型的场景,通过XPath定位节点:

using System.Xml;

// 替换为你的XML字符串,若从文件读取可使用doc.Load("文件路径")
string xmlContent = "<a><b><c><c1>Data</c1></c></b></a>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlContent);

// 查询所有层级的<c>节点,若需精准定位特定路径可改为"/a/b/c"
XmlNodeList cNodes = doc.SelectNodes("//c");

if (cNodes.Count > 0)
{
    Console.WriteLine($"<c>节点存在,数量为:{cNodes.Count}");
}
else
{
    Console.WriteLine("<c>节点不存在");
}

方法2:使用XDocument(LINQ to XML,推荐)

语法更简洁直观,适合.NET Framework 3.5及以上版本:

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

// 替换为你的XML字符串,若从文件读取可使用XDocument.Load("文件路径")
string xmlContent = "<a><b><c><c1>Data</c1></c></b></a>";
XDocument doc = XDocument.Parse(xmlContent);

// 查询所有层级的<c>元素,精准定位可改为doc.Element("a")?.Element("b")?.Elements("c")
var cElements = doc.Descendants("c");

if (cElements.Any())
{
    Console.WriteLine($"<c>节点存在,数量为:{cElements.Count()}");
}
else
{
    Console.WriteLine("<c>节点不存在");
}

补充说明

  • 如果只需统计特定路径下的<c>节点(比如仅<a>/<b>下的),可调整XPath或LINQ查询条件,避免统计其他位置的同名节点
  • 两种方法均支持从字符串或本地文件加载XML,按需选择即可

内容的提问来源于stack exchange,提问作者FullStack-.NetMVC-BizMule-Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:09:54