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

如何获取XML指定元素?XmlDocument获取Info/Result/ID失败求助

问题原因

GetElementsByTagName方法仅能接收单个标签名称作为参数,无法识别Info/Result/ID这种层级路径表达式。它会尝试查找所有名为Info/Result/ID的标签(显然不存在),而非定位到Info下Result节点内的ID元素,因此返回空节点列表。

解决方案

以下是三种可行的解决方式,按需选择:

1. 使用XmlDocument的XPath查询(直接路径定位)

利用SelectNodes方法传入XPath路径,直接定位目标节点:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("myFile.xml");
XmlNodeList myList = xmlDoc.SelectNodes("/Info/Result/ID");
int totalCount = myList.Count;
// 后续业务逻辑
  • 路径/Info/Result/ID是绝对路径,会从根节点开始匹配Info下的Result节点,再获取其中的ID元素。

2. 分步获取节点(逐层遍历)

如果需要对中间节点做额外处理,可以逐层查找:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("myFile.xml");

// 先找到根Info节点
XmlNode infoNode = xmlDoc.SelectSingleNode("Info");
if (infoNode != null)
{
    // 再找Info下的Result节点
    XmlNode resultNode = infoNode.SelectSingleNode("Result");
    if (resultNode != null)
    {
        // 最后获取Result下的所有ID节点
        XmlNodeList idNodes = resultNode.GetElementsByTagName("ID");
        int totalCount = idNodes.Count;
        // 后续业务逻辑
    }
}

3. 使用LINQ to XML(现代简洁方案,推荐)

如果项目支持.NET Framework 3.5及以上(或.NET Core/.NET 5+),推荐使用XDocument的LINQ查询,代码更简洁易读:

XDocument xDoc = XDocument.Load("myFile.xml");

// 链式调用定位节点
int totalCount = xDoc.Descendants("Info")
                     .Elements("Result")
                     .Elements("ID")
                     .Count();

// 也可以用XPath方式
int countViaXPath = xDoc.XPathSelectElements("/Info/Result/ID").Count();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:55:18