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

如何用C#将XML中体重值存入字典并按孩子姓名检索?

实现按孩子姓名检索体重的字典

当然可以实现这个需求!你只需要调整LINQ to XML的查询逻辑,直接构建一个字典,把孩子姓名作为键、体重作为值,这样就能通过姓名快速检索对应的体重了。

完整实现代码

// 加载目标XML文档
var xmlDoc = XDocument.Load(path + @"\Pages\Fams.xml");

// 构建姓名与体重映射的字典
var weightLookup = xmlDoc.Descendants("Child")
    .ToDictionary(
        // 键:提取孩子姓名,Trim()去除文本前后的空格
        childNode => childNode.Element("ChildName").Value.Trim(),
        // 值:提取对应体重,同样去除空格
        childNode => childNode.Element("Details").Element("Weight").Value.Trim()
    );

// 使用示例:通过姓名获取体重
string billWeight = weightLookup["Bill"]; // 返回 "78"
// 如果需要数值类型,可直接转换
int billWeightNum = int.Parse(weightLookup["Bill"]);

为什么这个方案可行?

你原来的代码只提取了所有Weight元素的值,丢失了每个体重对应的孩子姓名关联。而上面的代码从每个Child节点出发,同时获取该节点下的ChildName和对应的Weight值,通过ToDictionary方法直接建立键值对映射。

因为你提到所有孩子姓名都是唯一的,所以ToDictionary方法不会抛出重复键的异常,完全符合你的场景需求。

可选优化(处理潜在空元素)

如果XML中可能存在缺失ChildName或Weight的节点,可以添加空值检查避免报错:

var safeWeightLookup = xmlDoc.Descendants("Child")
    .Where(childNode => 
        childNode.Element("ChildName") != null && 
        childNode.Element("Details")?.Element("Weight") != null)
    .ToDictionary(
        childNode => childNode.Element("ChildName").Value.Trim(),
        childNode => childNode.Element("Details").Element("Weight").Value.Trim()
    );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:08:48