新闻中心

C#如何操作XML文件 C#使用XmlDocument和LINQ to XML解析XML

2025-11-13
浏览次数:
返回列表
答案:C#中操作XML常用XmlDocument和LINQ to XML;XmlDocument基于DOM,适合复杂操作;LINQ to XML语法简洁,支持LINQ查询,推荐新项目使用。

c#如何操作xml文件 c#使用xmldocument和linq to xml解析xml

在C#中操作XML文件是常见的需求,尤其是在处理配置文件、数据交换或Web服务时。.NET 提供了多种方式来读取、修改和创建 XML 文件,其中 XmlDocumentLINQ to XML 是两种最常用的方法。下面分别介绍它们的使用方式和适用场景。

使用 XmlDocument 操作 XML

XmlDocument 是基于 DOM(文档对象模型)的类,它会将整个 XML 文档加载到内存中,形成树形结构,适合对 XML 进行频繁的增删改查操作。

示例:读取并遍历 XML 节点

假设有一个 XML 文件 books.xml

<Books>
  <Book Id="1">
    <Title>C# 入门经典</Title>
    <Author>John Doe</Author>
  </Book>
  <Book Id="2">
    <Title>深入理解 C#</Title>
    <Author>Jane Smith</Author>
  </Book>
</Books>

使用 XmlDocument 加载并读取内容:

XmlDocument doc = new XmlDocument();
doc.Load("books.xml"); // 或 LoadXml(string xml)
<p>XmlNodeList bookNodes = doc.SelectNodes("//Book");
foreach (XmlNode node in bookNodes)
{
string id = node.Attributes["Id"]?.Value;
string title = node["Title"]?.InnerText;
string author = node["Author"]?.InnerText;</p><pre class='brush:php;toolbar:false;'>Console.WriteLine($"ID: {id}, Title: {title}, Author: {author}");

}

修改 XML 示例

添加一个新节点:

XmlElement newBook = doc.CreateElement("Book");
newBook.SetAttribute("Id", "3");
<p>XmlElement titleElem = doc.CreateElement("Title");
titleElem.InnerText = "LINQ 实战";
newBook.AppendChild(titleElem);</p><p>XmlElement authorElem = doc.CreateElement("Author");
authorElem.InnerText = "Tom Lee";
newBook.AppendChild(authorElem);</p><p>doc.DocumentElement?.AppendChild(newBook);
doc.S*e("books.xml"); // 保存更改</p>

使用 LINQ to XML 操作 XML

LINQ to XML 是一种更现代、更简洁的方式,它结合了 LINQ 的查询能力,语法更直观,适合函数式编程风格。

示例:加载并查询 XML

Perplexity Perplexity

Perplexity是一个ChatGPT和谷歌结合的超级工具,可以让你在浏览互联网时提出问题或获得即时摘要

Perplexity 302 查看详情 Perplexity

同样以上面的 books.xml 为例:

XDocument xDoc = XDocument.Load("books.xml");
<p>var books = from book in xDoc.Descendants("Book")
select new
{
Id = book.Attribute("Id")?.Value,
Title = book.Element("Title")?.Value,
Author = book.Element("Author")?.Value
};</p><p>foreach (var b in books)
{
Console.WriteLine($"ID: {b.Id}, Title: {b.Title}, Author: {b.Author}");
}</p>

创建 XML 示例

LINQ to XML 创建 XML 更加简洁:

XDocument newDoc = new XDocument(
    new XElement("Books",
        new XElement("Book", new XAttribute("Id", "1"),
            new XElement("Title", "C# 高级编程"),
            new XElement("Author", "Jeffrey Richter")
        ),
        new XElement("Book", new XAttribute("Id", "2"),
            new XElement("Title", "CLR via C#"),
            new XElement("Author", "Jeffrey Richter")
        )
    )
);
<p>newDoc.S*e("new_books.xml");</p>

修改 XML 示例

更新某个节点的内容:

XDocument xDoc = XDocument.Load("books.xml");
var book = xDoc.Descendants("Book")
               .FirstOrDefault(b => b.Attribute("Id")?.Value == "1");
if (book != null)
{
    book.Element("Title")!.Value = "C# 精通之路";
}
<p>xDoc.S*e("books.xml");</p>

XmlDocument 与 LINQ to XML 对比

  • XmlDocument:适合复杂操作、需要完整 DOM 树、兼容老项目;语法略显繁琐。
  • LINQ to XML:语法简洁、支持 LINQ 查询、创建和修改更直观;推荐用于新项目。

如果只是简单读取或生成 XML,优先选择 LINQ to XML。如果需要精确控制节点类型、命名空间或进行复杂的节点操作,XmlDocument 依然可靠。

基本上就这些。根据项目需求选择合适的方式,都能高效地完成 XML 操作任务。

以上就是C#如何操作XML文件 C#使用XmlDocument和LINQ to XML解析XML的详细内容,更多请关注其它相关文章!


# 是在  # 浴场怎么推广营销方案范文  # 浙江互联网网站建设预算  # 黎平企业网站建设  # seo网站排名高  # 东莞矩阵seo怎么合作  # 松原seo助手如何营销  # 揭阳seo快速排名优化  # 咖啡营销推广策划  # 珲春平台seo优化  # 南通优化网站建设哪家好  # 都能  # 是一种  # node  # 互联网  # 文档  # 是一个  # 身份验证  # 如何使用  # 加载  # .net  # c#  # xml解析  # 配置文件  # app 


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


相关推荐: Archive of Our Own官网直达 AO3最新可用地址一览  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  实现全屏滚动与导航点:专业教程  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  微博网页版直接访问 微博网页版账号管理快速入口  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  在哪找SublimeJ远程工具_SFTP插件配置教程  Composer如何解决json扩展缺失的错误  漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  J*aScriptWebpack优化_J*aScript构建工具实战  必由学官方登录入口 必由学教师学生账号快速访问  实现分段式页面滚动导航:CSS与J*aScript教程  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  Golang指针如何与map组合使用_Golang map指针组合实践  小米Civi 4录制视频过暗_小米Civi 4亮度优化  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  解决Bootstrap卡片顶部边距导致背景图下移的问题  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  AngularJS $http POST请求数据传递与Go后端接收实践  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析  mcjs网页版在线存档 mcjs云存档登录入口  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  抖音极速版最新版本 抖音极速版官方下载地址  word中如何让数字纵向排列_Word数字纵向排列方法  漫蛙2网页版漫画入口 漫蛙漫画在线官方登录  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  Python多线程中正确使用sigwait处理SIGALRM信号  Angular中单选按钮的正确使用与常见陷阱解析  C++如何实现异步操作_C++11使用std::future和std::async进行异步编程  树莓派传感器触发:通过Twilio API发送WhatsApp消息教程  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  想当下一个《2077》?《心之眼》Steam评价升至"多半好评"  厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新  QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  如何修改开机登录密码_Windows账户安全设置超详细教程【必学】  ACG动漫视频网入口 ACG动漫*免费正版观看地址  在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明  PHP URL参数传递与500错误调试指南  在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  顺丰快递查单号物流信息 顺丰快递小程序查询入口  夸克浏览器网页版最新地址 夸克浏览器官方入口合集 

搜索