C#中设置XML元素属性推荐用XElement或XmlDocument:XElement用SetAttributeValue增删改属性,简洁高效;XmlDocument需先获取XmlElement再调用SetAttribute,适合老项目或命名空间场景。

在C#中设置XML元素的属性,最常用且推荐的方式是使用 XElement(来自 System.Xml.Linq)或 XmlDocument。下面分两种主流方式说明,兼顾简洁性与实用性。
使用 XElement 添加或修改属性
XElement 是 LINQ to XML 的核心类,语法简洁、操作直观,适合新建或轻量修改XML。
- 创建元素时直接传入
XAttribute:
new XAttribute("id", "1001"),
new XAttribute("type", "student"),
new XElement("Name", "张三")
);
- 对已有元素添加/更新属性:用
SetAttributeValue方法(自动处理新增或覆盖):
// 若属性已存在,则更新值;不存在则新增
- 删除属性:传
null或使用RemoveAttributes()清空所有:
使用 XmlDocument 设置属性
适用于需要兼容老项目、或需精细控制 DOM 结构的场景。
Yes!Sun基于PHP+MYSQL技术,体积小巧、应用灵活、功能强大,是一款为企业网站量身打造的WEB系统。其创新的设计理念,为企业网的开发设计及使用带来了全新的体验:支持前沿技术:动态缓存、伪静态、静态生成、友好URL、SEO设置等提升网站性能、用户体验、搜索引擎友好度的技术均为Yes!Sun所支持。易于二次开发:采用独创的平台化理念,按需定制项目中的各种元素,如:产品属性、产品相册、新闻列表
- 先获取目标
XmlElement,再调用SetAttribute:
doc.LoadXml(@"
XmlElement personNode = (XmlElement)doc.SelectSingleNode("//Person");
personNode.SetAttribute("id", "1001");
personNode.SetAttribute("type", "student");
- 若要设置带命名空间的属性(如
xmlns:xsi),需用SetAttributeNode配合XmlAttribute构造:
nsAttr.Value = "http://www.w3.org/2001/XMLSchema-instance";
personNode.SetAttributeNode(nsAttr);
注意事项与常见问题
避免踩坑的关键细节:
- 属性名区分大小写,
"ID"和"id"是两个不同属性; -
XElement.SetAttributeValue不会抛异常,即使元素为空或路径错误,需提前校验; - 用
XmlDocument修改后,如需保存,必须显式调用Save(); - 中文或特殊字符作为属性值时,
XElement会自动转义(如&→&),无需手动处理。
简单对比建议
新项目优先选 XElement:代码少、可链式构建、支持 LINQ 查询;
维护旧系统或需严格遵循 W3C DOM 行为时,用 XmlDocument 更稳妥。









