如何使用C#修改《模拟农场22》存档XML文件的节点值
C# 修改《模拟农场22》存档XML指定节点值的方案
直接使用System.Xml.Linq命名空间下的XDocument类即可实现不重建XML文件、仅修改指定节点值的需求,步骤如下:
1. 引用必要的命名空间
在代码文件顶部添加:
using System.Xml.Linq;
2. 加载目标XML文件
指定存档文件路径,加载现有XML文档:
string saveFilePath = @"C:\Users\Name\Documents\My Games\FarmingSimulator2022\savegame1\careerSavegame.xml"; XDocument doc = XDocument.Load(saveFilePath);
3. 定位并修改指定节点值
以修改<savegameName>和<resetVehicles>节点为例:
// 修改savegameName节点的值 var savegameNameNode = doc.Descendants("savegameName").FirstOrDefault(); if (savegameNameNode != null) { savegameNameNode.Value = "My Modified Save"; } // 修改resetVehicles节点的值(布尔类型) var resetVehiclesNode = doc.Descendants("resetVehicles").FirstOrDefault(); if (resetVehiclesNode != null) { resetVehiclesNode.Value = "true"; }
注意:如果节点存在多层嵌套(比如
<settings>下的节点),也可以用doc.Root.Element("settings").Element("节点名")来精准定位,避免同名称节点冲突。
4. 保存修改后的XML文件
将修改后的文档写回原文件:
doc.Save(saveFilePath);
额外注意事项
- 操作前建议备份存档文件,避免修改错误导致存档损坏。
- 如果XML文件编码为
utf-8,XDocument.Save()会默认保留原编码格式,无需额外设置。 - 若需要修改属性值(比如
<careerSavegame>的revision属性),可以用doc.Root.Attribute("revision").Value = "3"这种方式。
内容的提问来源于stack exchange,提问作者ShaunDev
相关产品推荐
相关产品推荐

