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

如何使用C#提取XML文档中所有<SpecialCode>元素的文本内容?

简便的C#实现方案

当然有!在C#里提取XML树中任意位置的<SpecialCode>元素文本,最省心的方式就是利用LINQ to XML(基于XDocument的API),它能直接遍历整个XML结构找到所有目标元素,完全不用关心它们的层级位置。

方法一:LINQ to XML(推荐)

这种方法代码简洁,可读性高,是现代C#处理XML的首选方案:

using System.Xml.Linq;

// 假设你的XML内容已经加载,或者可以从文件/流读取
string xmlContent = @"<Root>
    <Level1>
        <SpecialCode>SC001</SpecialCode>
    </Level1>
    <Level2>
        <Level3>
            <SpecialCode>SC002</SpecialCode>
        </Level3>
    </Level2>
</Root>";

// 加载XML文档
XDocument doc = XDocument.Parse(xmlContent);

// 提取所有<SpecialCode>的文本到字符串数组
string[] specialCodes = doc.Descendants("SpecialCode")
                           .Select(element => element.Value.Trim()) // 可选:去除前后空白
                           .ToArray();

// 输出结果
foreach (var code in specialCodes)
{
    Console.WriteLine(code);
}

关键说明:

  • Descendants("SpecialCode"):会遍历XML树中所有层级的<SpecialCode>元素,不管它在根节点下多少层。
  • element.Value:直接获取元素内部的文本内容。
  • 如果XML有命名空间,只需先定义命名空间再传入Descendants:
    XNamespace ns = "http://your-namespace-uri";
    string[] specialCodes = doc.Descendants(ns + "SpecialCode")
                               .Select(e => e.Value.Trim())
                               .ToArray();
    

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

如果你维护的是较旧的项目,习惯用XmlDocument,可以结合XPath表达式//SpecialCode来匹配任意位置的元素:

using System.Xml;

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlContent); // 或从文件加载:doc.Load("your-file.xml");

// 使用XPath选择所有<SpecialCode>节点
XmlNodeList nodes = doc.SelectNodes("//SpecialCode");

// 转换为字符串数组
List<string> codeList = new List<string>();
foreach (XmlNode node in nodes)
{
    codeList.Add(node.InnerText.Trim());
}
string[] specialCodes = codeList.ToArray();

关键说明:

  • XPath表达式//SpecialCode的作用就是匹配XML文档中任意位置的<SpecialCode>元素。
  • 如果XML有命名空间,需要先给XmlNamespaceManager注册命名空间,再传入SelectNodes:
    XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);
    nsMgr.AddNamespace("ns", "http://your-namespace-uri");
    XmlNodeList nodes = doc.SelectNodes("//ns:SpecialCode", nsMgr);
    

这两种方法都能完美解决你的需求,其中LINQ to XML的写法更简洁,也更符合现代C#的编程风格,优先推荐使用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:12