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

如何使用C# XmlDocument动态获取XML子节点的属性名?

使用XmlDocument获取XML节点的属性与内部值

针对你给出的XML结构,用XmlDocument可以轻松获取每个<meas>节点的name属性值和内部文本值,具体实现如下:

完整代码示例

using System;
using System.Xml;

class Program
{
    static void Main()
    {
        // 示例XML内容,实际场景可从文件/流加载
        string xmlContent = @"<response location='location1'>
            <meas name='mt1'>14</meas>
            <meas name='mt2'>23</meas>
            <meas name='mt3'>65</meas>
            <meas name='mt4'>31</meas>
            <meas name='mt6'>32</meas>
        </response>";

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlContent);

        // 用XPath定位所有<meas>节点
        XmlNodeList measNodeList = xmlDoc.SelectNodes("//meas");

        // 遍历每个节点,提取属性和内部值
        foreach (XmlNode measNode in measNodeList)
        {
            // 安全获取name属性值(避免属性不存在引发空引用)
            string nameAttribute = measNode.Attributes["name"]?.Value;
            // 获取节点内部文本,Trim去除多余空白
            string innerValue = measNode.InnerText.Trim();

            if (!string.IsNullOrEmpty(nameAttribute))
            {
                Console.WriteLine($"name属性: {nameAttribute}, 数值: {innerValue}");
            }
        }
    }
}

关键步骤说明

  • 加载XML:使用LoadXml()加载字符串形式的XML,若从文件读取则用Load("文件路径")。
  • 定位节点:通过SelectNodes("//meas")用XPath表达式匹配所有<meas>节点,//表示在整个文档范围内查找。
  • 提取属性:通过XmlNode.Attributes["属性名"]获取属性节点,?.Value是C#的空条件运算符,防止属性不存在时抛出异常。
  • 获取内部值:InnerText属性直接返回节点的文本内容,调用Trim()清理XML格式带来的换行和空格。

如果需要获取父节点<response>的location属性,只需访问xmlDoc.DocumentElement.Attributes["location"]?.Value即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:50:17