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

如何使用C#和XElement(LINQ)访问XML节点文本?

C#中简便访问XML节点C的内部文本方法

问题原因

VB.NET的LINQ to XML对IEnumerable<XElement>集合做了语法糖处理,调用.Value时会自动取第一个匹配元素的文本;但C#中Elements()返回的是IEnumerable<XElement>,没有直接的.Value属性,因此直接调用会报错。

简便解决方案

以下是几种常用的简洁写法:

1. 结合FirstOrDefault()与空值传播

先获取第一个匹配的<C>节点,再安全访问其Value:

string strMsg = oX.Elements("A").Elements("B").Elements("C").FirstOrDefault()?.Value;
  • 如果找不到任何<C>节点,?.会返回null,避免空引用异常。

2. 使用XPath简化链式调用

引用System.Xml.XPath命名空间后,用XPath直接定位节点,写法更直观:

using System.Xml.XPath;

string strMsg = oX.XPathSelectElement("A/B/C")?.Value;

3. 用SingleOrDefault()(适用于节点唯一的场景)

如果确定XML结构中只会有一个<C>节点,可用SingleOrDefault(),它会在存在多个匹配节点时抛出异常:

string strMsg = oX.Elements("A").Elements("B").Elements("C").SingleOrDefault()?.Value;

可选:设置默认值

如果不想返回null,可以给结果设置默认空字符串:

string strMsg = oX.XPathSelectElement("A/B/C")?.Value ?? string.Empty;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:41