新闻中心

C#怎么使用LINQ to XML_C# LINQ to XML查询与操作教程

2025-11-01
浏览次数:
返回列表
LINQ to XML 提供简洁高效的 XML 处理方式,支持创建、查询、修改和保存 XML 文档。通过 XElement 和 XDocument 可构建或加载 XML,结合 LINQ 语法实现节点查询与投影,支持属性筛选、命名空间处理,并可添加、更新、删除节点后保存到文件,适用于配置管理与数据交换场景。

c#怎么使用linq to xml_c# linq to xml查询与操作教程

LINQ to XML 是 C# 中处理 XML 数据的强大工具,它结合了 LINQ 的查询能力与 XML 文档操作的灵活性。相比传统的 XML 处理方式(如 XmlDocument),LINQ to XML 更加简洁、易读,并支持函数式编程风格。下面介绍如何使用 C# 进行常见的 XML 查询与操作。

创建和加载 XML 文档

你可以从字符串、文件或直接构建的方式创建 XML 文档。

示例:创建一个简单的 XML 文档

XElement books = new XElement("Books",
    new XElement("Book",
        new XAttribute("Id", "1"),
        new XElement("Title", "C# 入门详解"),
        new XElement("Author", "张三"),
        new XElement("Price", "59.80")
    ),
    new XElement("Book",
        new XAttribute("Id", "2"),
        new XElement("Title", "LINQ 实战"),
        new XElement("Author", "李四"),
        new XElement("Price", "68.00")
    )
);

从文件加载 XML

XDocument doc = XDocument.Load("books.xml");

从字符串解析 XML

string xmlStr = @"<Books><Book Id='1'><Title>C# 高级编程</Title></Book></Books>";
XElement root = XElement.Parse(xmlStr);

使用 LINQ 查询 XML 数据

你可以使用标准 LINQ 查询语法筛选和投影 XML 节点。

查询所有书籍标题

var titles = from book in books.Elements("Book")
             select book.Element("Title").Value;
<p>foreach (var title in titles)
{
Console.WriteLine(title);
}</p>

查找价格大于 60 的书籍

var expensiveBooks = from book in books.Elements("Book")
                     let price = double.Parse(book.Element("Price").Value)
                     where price > 60
                     select new
                     {
                         Title = book.Element("Title").Value,
                         Price = price
                     };
<p>foreach (var b in expensiveBooks)
{
Console.WriteLine($"{b.Title}: {b.Price}");
}</p>

通过属性查询特定书籍

短影AI 短影AI

长视频一键生成精彩短视频

短影AI 170 查看详情 短影AI
var bookById = books.Elements("Book")
                    .Where(b => b.Attribute("Id")?.Value == "1")
                    .FirstOrDefault();
<p>if (bookById != null)
{
Console.WriteLine("找到书籍: " + bookById.Element("Title").Value);
}</p>

修改和保存 XML

你可以添加、更新或删除节点,并将结果保存到文件。

添加新书籍

books.Add(new XElement("Book",
    new XAttribute("Id", "3"),
    new XElement("Title", "ASP.NET 核心开发"),
    new XElement("Author", "王五"),
    new XElement("Price", "75.00")
));

更新某本书的价格

var bookToUpdate = books.Elements("Book")
                        .FirstOrDefault(b => b.Element("Title")?.Value == "C# 入门详解");
if (bookToUpdate != null)
{
    bookToUpdate.Element("Price").Value = "55.00";
}

删除某本书

var bookToDelete = books.Elements("Book")
                        .FirstOrDefault(b => (string)b.Attribute("Id") == "2");
bookToDelete?.Remove();

保存到文件

doc.S*e("updated_books.xml"); // 如果是 XDocument
// 或者
books.S*e("new_books.xml");   // 如果是 XElement 且需要根节点

处理命名空间

当 XML 包含命名空间时,查询需显式指定。

XNamespace ns = "http://example.com/books";
var booksWithNs = from book in root.Elements(ns + "Book")
                  select book.Element(ns + "Title").Value;

基本上就这些常用操作。LINQ to XML 让 XML 处理变得直观高效,适合配置文件、数据交换等场景。熟练掌握后能大幅提升开发效率。

以上就是C#怎么使用LINQ to XML_C# LINQ to XML查询与操作教程的详细内容,更多请关注其它相关文章!


# 相关文章  # seo付费吗  # 锅炉网站建设哪家好  # 直播教育网站建设  # 奉贤seo费用  # 河池个性化网站建设平台  # 短剧推广横屏素材下载网站  # 新华书店营销推广看法  # 网站推广的岗位  # seo 现在 效果  # 麒麟seo术语详解  # 中文网  # c#  # 适用于  # 数据交换  # 不带  # 加载  # 本书  # 文档  # 你可以  # .net  # 字符串解析  # 配置文件  # 工具 


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


相关推荐: Django通过AJAX异步上传图片并保存至模型的完整指南  J*aScript中安全有效地处理localStorage字符串数据  快手极速版在线观看 官方网页版登录地址  Node.js中HTML按钮与J*aScript函数交互的正确姿势  微信客户端如何收红包_微信客户端接收红包使用教程  在命令行怎么运行html项目_命令行运行html项目方法【教程】  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明  在J*a项目里如何构建对象之间的契约_接口约束的实际落地  蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗  poki网页游戏推荐_poki免费游戏平台入口  AO3最新入口2025公告_AO3中文官网合集  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站  Lar*el 递归关系中排除指定分支的教程  解决Python单元测试中Mock异常方法调用计数为零的问题  解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException  sublime怎么覆盖插件的默认快捷键_sublime快捷键优先级与设置  如何提高微信支付的安全性_微信支付安全防护与设置建议  Python字典中优雅地迭代剩余元素的方法  必由学官方平台入口 必由学在线课堂登录地址  Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法  Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】  Pygame教程:解决用户输入与游戏状态更新不同步问题  Bing引擎入口最新2025 Bing搜索免费官方登录  小红书网页版入口链接分享 小红书官网直接进  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  React Router 嵌套组件中 URL 重定向问题的解决方案  windows10怎么关闭系统提示音_windows10彻底静音设置方法  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  AO3官方镜像站点汇总 AO3同人作品网页版直达链接  快手网页版在线登录 快手网页版官网入口快速访问  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  如何更改在 Excel 中打开超链接时的默认浏览器  mysql如何设置表访问权限_mysql表访问权限配置  Mac怎么锁定备忘录_Mac备忘录加密设置教程  12306选座系统怎么选连座_12306选座多人连坐操作方法  Pandas DataFrame 多条件优先级排序与排名  2026年发布! 美少女养成动作RPG《神剑少女战记》发布实机演示  sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  Excel Power Pivot如何处理XML数据源 构建高级数据模型  cad如何更改注释性对象的比例_cad注释性比例调整方法  Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】  Python实时数据流中的动态最值查找策略  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  J*a 递归快速排序中静态变量的状态管理与陷阱  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  押井守高度称赞《辐射4》:玩了八年都停不下来! 

搜索