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

如何选中指定XML节点并修改其值?含XML结构及代码疑问

实现指定日期修改XML中的气象数据

嘿,我看你已经有了初步的代码框架,现在帮你把完整的实现补全,并且把关键细节讲清楚,这样你就能顺利修改指定日期的XML气象数据啦!

完整实现代码

using System;
using System.Xml;

public static class XmlWeatherUpdater
{
    public static void WriteXML(int day, double[] mess, string path)
    {
        // 初始化XmlDocument并加载目标XML文件
        XmlDocument doc = new XmlDocument();
        try
        {
            doc.Load(path);
            
            // 获取XML根节点<messwerte>
            XmlNode rootNode = doc.SelectSingleNode("/messwerte");
            
            // 通过XPath定位到对应天数的<messwert>节点
            XmlNode targetDayNode = rootNode.SelectSingleNode($"messwert[tag='{day}']");
            
            if (targetDayNode != null)
            {
                // 修改降水量节点值
                targetDayNode.SelectSingleNode("niederschlag").InnerText = mess[0].ToString();
                // 修改温度节点值,注意替换小数点为逗号适配XML格式
                targetDayNode.SelectSingleNode("temperatur").InnerText = mess[1].ToString().Replace('.', ',');
                // 修改气压节点值,同样适配逗号小数格式
                targetDayNode.SelectSingleNode("druck").InnerText = mess[2].ToString().Replace('.', ',');
                
                // 保存修改后的XML文件
                doc.Save(path);
                Console.WriteLine($"成功更新第{day}天的气象数据!");
            }
            else
            {
                Console.WriteLine($"未找到第{day}天对应的气象数据节点,请检查天数是否正确!");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"处理XML文件时发生错误:{ex.Message}");
        }
    }
}

关键细节说明

  • 精准节点定位:使用XPath表达式messwert[tag='{day}']直接找到对应天数的<messwert>节点,这是实现指定日期修改的核心逻辑
  • 小数格式适配:你的XML中使用逗号作为小数分隔符(比如7,6),所以将double类型转换为字符串时,需要把默认的点.替换成逗号,,避免格式不一致
  • 异常处理:通过try-catch捕获文件加载失败、节点不存在等异常情况,让代码更健壮
  • 参数对应关系:mess数组的三个元素依次对应<niederschlag>、<temperatur>、<druck>的新值

调用示例

// 示例:修改第3天的气象数据,降水量52,温度9.1,气压4.9
double[] newWeatherData = {52, 9.1, 4.9};
XmlWeatherUpdater.WriteXML(3, newWeatherData, @"D:\weather_records.xml");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:45:09