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

能否无需循环直接从XML文档声明并填充C#字符串数组?

在C#中快速从XML提取属性到字符串数组

当然可以实现!而且完全不用手动写循环,C#里的LINQ能帮我们用简洁的代码搞定这个需求,比你设想的简化写法更顺畅。

给你两种常用的实现方案:

方案一:用LINQ to XML(推荐,更现代的XML处理方式)

// 加载XML文档(也可以用Parse方法加载字符串形式的XML)
XDocument xDoc = XDocument.Load("你的XML文件路径");

// 一行提取所有<a>标签的href属性到字符串数组
string[] myArray = xDoc.Descendants("a")
                       .Select(a => a.Attribute("href")?.Value)
                       .Where(value => value != null) // 过滤掉没有href属性的<a>标签
                       .ToArray();

方案二:沿用XmlDocument对象模型(和你VBA的写法更接近)

如果你习惯用XmlDocument,也可以用LINQ简化循环逻辑:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("你的XML文件路径");

string[] myArray = xmlDoc.SelectNodes("//a")
                         .Cast<XmlNode>() // 将XmlNodeList转成LINQ可处理的泛型集合
                         .Select(node => node.Attributes["href"]?.InnerText)
                         .Where(value => value != null)
                         .ToArray();

补充说明

  • 用?.运算符是为了避免空引用异常:如果某个<a>标签没有href属性,代码会返回null而不是直接报错,后面的Where会自动过滤这些空值
  • 你之前写的xmlDoc.SelectNodes("//a").Attributes.getNamedItem("href").Text无法运行,是因为SelectNodes返回的是一组节点,不是单个节点,必须逐个处理每个节点的属性才行
  • 两种方案都不需要手动写foreach,LINQ已经帮我们封装了循环逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:17