新闻中心

C# 如何更新xml中某个节点的多个属性

2025-11-12
浏览次数:
返回列表
使用XDocument可便捷更新XML节点属性。首先加载XML文件,通过Descendants查找目标节点,利用SetAttributeValue方法修改或添加属性,支持批量更新并自动处理属性存在性,最后保存文件。推荐此方式因语法简洁、操作直观,适用于多数场景。

c# 如何更新xml中某个节点的多个属性

C# 中更新 XML 文件中某个节点的多个属性,可以通过 System.Xml 命名空间中的 XDocumentXmlDocument 类来实现。以下是使用 XDocument 的推荐方式,简洁且易于操作。

1. 使用 XDocument 加载并修改节点属性

假设你有一个 XML 文件如下:

<Root>
  <Person Id="1" Name="Alice" Age="25" City="Beijing" />
</Root>

你想将 Name 改为 "Bob",Age 改为 "30",City 改为 "Shanghai"。

代码示例:

using System;
using System.Xml.Linq;
<p>// 加载 XML 文档
XDocument doc = XDocument.Load("test.xml");</p><p>// 查找目标节点,例如 Person 节点(可根据条件查找)
var person = doc.Descendants("Person").FirstOrDefault(x => x.Attribute("Id")?.Value == "1");</p><p>if (person != null)
{
// 更新多个属性
person.SetAttributeValue("Name", "Bob");
person.SetAttributeValue("Age", "30");
person.SetAttributeValue("City", "Shanghai");
}</p><p>// 保存回文件
doc.S*e("test.xml");

2. 批量更新多个属性的技巧

如果你需要一次性更新多个属性,可以封装成字典形式,简化代码:

var updates = new Dictionary<string, object>
{
    { "Name", "Bob" },
    { "Age", "30" },
    { "City", "Shanghai" }
};
<p>if (person != null)
{
foreach (var kvp in updates)
{
person.SetAttributeValue(kvp.Key, kvp.Value);
}
}

SetAttributeValue 方法会自动判断属性是否存在:存在则更新,不存在则添加。

千鹿Pr助手 千鹿Pr助手

智能Pr插件,融入众多AI功能和海量素材

千鹿Pr助手 128 查看详情 千鹿Pr助手

3. 如果使用 XmlDocument

传统方式也可用 XmlDocument,适用于较老项目:

using System.Xml;
<p>XmlDocument doc = new XmlDocument();
doc.Load("test.xml");</p><p>XmlNode person = doc.SelectSingleNode("//Person[@Id='1']");</p><p>if (person != null && person.Attributes != null)
{
person.Attributes["Name"].Value = "Bob";
person.Attributes["Age"].Value = "30";
person.Attributes["City"].Value = "Shanghai";
}</p><p>doc.S*e("test.xml");

注意要确保属性存在,否则会抛出异常。可先判断:person.Attributes["Name"] != null

4. 注意事项

  • 路径和条件要准确匹配目标节点,避免误改。
  • 修改后记得调用 S*e 方法持久化到文件。
  • 处理大型 XML 时注意性能,可考虑流式读取或分批处理。
  • 建议操作前备份原始文件,防止数据丢失。

基本上就这些,使用 XDocument 更现代、简洁,适合大多数场景。

以上就是C# 如何更新xml中某个节点的多个属性的详细内容,更多请关注其它相关文章!


# 可以通过  # 百度网站优化排名素材库  # 儿童节营销推广活动策划  # 加盟品牌推广网站  # 霍州网站优化seo推广服务  # 网站建设与规划检测设备  # seo优化建议  # 林芝网站优化公司  # 下城企业营销推广  # 三门峡网站建设推广渠道  # 邢台seo公司  # 中文网  # c#  # 相关文章  # 你有  # 如果你  # 如何实现  # 加载  # 适用于  # 多个  # 数据丢失  # ai  # node  # xml 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】  Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  58动漫网在线官方网 58动漫网正版动漫入口网址  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  深入理解J*a编译器的兼容性选项:从-source到--release  谷歌邮箱网页版官方页面入口 谷歌邮箱网页端快速访问  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  b站怎么看视频的弹幕数量_b站弹幕数量查看方法  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  Lar*el DB::listen 事件中的查询执行时间单位解析  动漫花园资源网使用步骤_动漫花园资源网下载流程  字由网在线版登录地址 字由网网页版安全入口  J*aScript Promise链中如何正确终止后续.then执行并处理错误  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  必由学官方网站入口 必由学学生教师共用登录通道  Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法  微信客户端如何收红包_微信客户端接收红包使用教程  学习通网页版官方登录 超星学习通电脑端入口指南  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  高德地图怎么看全景照片_高德地图全景照片浏览教程  vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  Typer应用中动态命令行参数的解析与处理  探索高级语言到原生C/C++的转译:挑战与内存管理策略  京东单号查询入口_京东快递订单追踪入口  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  菜鸟取件码是什么怎么查 最全查询渠道汇总  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  css子元素高度不一致导致布局错位怎么办_使用align-items:stretch解决高度差异  高德地图公交到站提醒失败如何解决 高德提醒权限设置  使用J*aScript检测输入元素是否包含在特定类中  铁路12306官网网页端快速入口 铁路12306官方首页登录教程  NetBeans Ant项目:自动化将资源文件复制到dist目录的教程  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  《主播少女的秘密账号迷宫》首支宣传片  动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道  jQuery Mask 插件中实现电话号码固定前导零的教程  iCloud登录入口网页版 苹果iCloud官网登录  Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组  必由学官方平台入口 必由学在线课堂登录地址  腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看 

搜索