C#修改XML节点应使用XmlDocument或XDocument类,避免字符串替换;XmlDocument适合小中型文件且API直观,XDocument支持LINQ更现代;需注意加载、定位、修改、保存全流程及编码、命名空间、空引用等常见问题。
用C#修改XML节点,核心是加载文档、定位节点、更新值或属性,再保存。推荐用 XmlDocument(适合小中型文件,API直观)或 XDocument(LINQ支持好,更现代)。别直接字符串替换,容易破坏结构。
适合快速定位并修改文本值、属性,尤其已有明确XPath路径时:
示例:把
var doc = new XmlDocument();
doc.Load("config.xml");
var nameNode = doc.SelectSingleNode("//user/name");
if (nameNode != null) nameNode.InnerText = "李四";
doc.Save("config.xml");
语法更简洁,支持LINQ查询,修改更安全:
示例:更新所有 status="pending" 的订单状态为 "processed"
var xdoc = XDocument.Load("orders.xml");
xdoc.Descendants("order")
.Where(e => e.Attribute("status")?.Value == "pending")
.ToList()
.ForEach(e => e.SetAttributeValue(
"status", "processed"));
xdoc.Save("orders.xml");
修改前先确保父节点存在,避免 NullReferenceException:
比如添加一个新配置项:,先找到
实际写入时容易忽略这些细节:
doc.Save(new StreamWriter("file.xml", false, Encoding.UTF8))
基本上就这些。选 XmlDocument 还是 XDocument,看团队习惯和项目需求。小文件、简单操作两者都行;复杂查询或需要链式处理,XDocument 更顺手。