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

C#获取XML指定元素值:根据custclass取对应custval

最优实现方案推荐

针对你需要从给定XML中获取<custclass>为"CD"对应的<custval>值的需求,这里推荐两种实用的C#实现方法,其中LINQ to XML是当前最简洁高效的方案:

首先先明确你提供的XML结构:

<Reply>
  <customer id="1223">
    <group>A</group>
    <class>
      <custclass>AB</custclass>
      <custval>1</custval>
    </class>
    <class>
      <custclass>CD</custclass>
      <custval>2</custval>
    </class>
  </customer>
</Reply>

方法一:LINQ to XML(推荐)

这是.NET Core和现代.NET Framework项目的首选方案,代码简洁易读,且支持强类型操作:

using System.Xml.Linq;

// 假设你的XML内容存储在字符串xmlStr中
string xmlStr = @"<Reply>...</Reply>"; // 替换为实际XML内容
XDocument doc = XDocument.Parse(xmlStr);

// 查询目标值
string targetVal = doc.Descendants("class")
    .Where(c => c.Element("custclass")?.Value == "CD")
    .Select(c => c.Element("custval")?.Value)
    .FirstOrDefault();

// 处理可能的空值情况
if (!string.IsNullOrEmpty(targetVal))
{
    // 赋值给你的字符串变量,执行后续逻辑
}

说明:

  • Descendants("class")会遍历XML中所有<class>元素,无需关心嵌套层级
  • 使用?.空传播运算符避免空引用异常(如果某个<class>下缺失<custclass>或<custval>元素)
  • FirstOrDefault()确保找到第一个匹配项后立即返回,兼顾性能与实用性

方法二:XmlDocument(兼容旧项目)

如果你的项目基于.NET Framework早期版本,也可以用传统的XmlDocument配合XPath实现:

using System.Xml;

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr); // 也可用doc.Load()加载本地XML文件

// 使用XPath定位目标节点
XmlNode custValNode = doc.SelectSingleNode("//class[custclass='CD']/custval");
string targetVal = custValNode?.InnerText;

// 后续空值处理逻辑同上

说明:

  • XPath表达式//class[custclass='CD']/custval直接定位到符合条件的<custval>节点
  • 同样需要处理节点为null的情况,避免空引用错误

总结

优先选择LINQ to XML方案,它的代码更简洁、可读性更强,且在现代.NET环境下性能表现优异。如果是维护旧项目,XmlDocument方案也是可靠的选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:12:55