linq to xml入门

89、LINQ to XML与Windows Communication Foundation入门 本文介绍了 LINQ to XML 和 Windows Communication Foundation(WCF)的基础知识及其在 .NET 平台中的应用。首先探讨了 LINQ to XML 在处理 XML 数据方面的优势及常见操作,例如添加元素、查询数据并与 UI 进行交互。随后回顾了多种分布式计算 API,并通过对比说明了 WCF 的统一编程模型和优势。文章还详细描述了 WCF 的核心组件及开发流程,并讨论了 .NET 4.0 对 WCF 的简化与优化。最后总结了 LINQ to XML 和 WCF 在 阅读详情

一、简介

LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML。 它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM)。 您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送。 但是,LINQ to XML 与 DOM 不同: 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 Visual C# 2008 在语言方面的改进。

LINQ to XML 最重要的优势是它与 Language-Integrated Query (LINQ) 的集成。 由于实现了这一集成,因此,可以对内存 XML 文档编写查询,以检索元素和属性的集合。 LINQ to XML 的查询功能在功能上(尽管不是在语法上)与 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 后,可提供更强的类型化功能、编译时检查和改进的调试器支持。

通过将查询结果用作 XElement 和 XAttribute 对象构造函数的参数,实现了一种功能强大的创建 XML 树的方法。 这种方法称为“函数构造”,利用这种方法,开发人员可以方便地将 XML 树从一种形状转换为另一种形状。

二、载入文档

可以通过XDocument或XElement的静态方法Load载入xml文档,Load可以接受URI字符串,TextReader,XmlReader作为输入源。还可以使用静态方法Parse把字符串转变为待查询的xml文档。XDocument和XElement的区别在于查询时,XElment可以跳过根几点直接查询。

//从文件载入
XDocument myPets = XDocument.Load("MyPets.xml");
//从http载入天气预报
string weatherWebService = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=58367";
XDocument weather = XDocument.Load(weatherWebService);
XElement weatherElement = XElement.Load(weatherWebService);

三、查询XML文档

待查询的xml文档

<?xml version="1.0" encoding="utf-8"?>
<pets>
  <pet>
    <id>2</id>
    <name>Dog</name>
    <species>Some Kind of Cat</species>
    <sex>Female</sex>
    <startYear>1972</startYear>
    <endYear>1974</endYear>
    <causeOfDeath>Car</causeOfDeath>
    <specialQuality>Best mouser</specialQuality>
  </pet>
  <pet>
    <id>3</id>
    <name>Sam</name>
    <species>Labrador</species>
    <sex>Female</sex>
    <startYear>1973</startYear>
    <endYear>1980</endYear>
    <causeOfDeath>Old Age</causeOfDeath>
    <specialQuality>Great hunting dog</specialQuality>
  </pet>
</pets>

载入文档后,XDocument或XElement的Elements()方法执行时返回IEnumrable<XElement>类型的子节点信息,Element()方法返回唯一的子节点信息。

查找所有pet的name。分别使用XDocument和XElement查找。

XDocument document = XDocument.Load("MyPets.xml");
XElement element = XElement.Load("MyPets.xml");

var name = from pet in document.Elements("pets").Elements("pet")
           select pet.Element("name").Value;

var pets = from pet in element.Elements("pet")
           select pet;

Array.ForEach(pets.ToArray(), p=>Console.WriteLine(p.Element("name").Value));
Array.ForEach(name.ToArray(), n => Console.WriteLine(n));

 

四、修改XML文档

修改pet的id

XElement element = XElement.Load("MyPets.xml");
var query = from pet in element.Elements("pet")
            select pet.Element("id");
foreach (var id in query)
{
    id.Value = Guid.NewGuid().ToString();
}
element.Save("NewPets.xml");

添加节点到owner到pet

XElement element = XElement.Load("MyPets.xml");
var query = from pet in element.Elements("pet")
            select pet;
foreach (var p in query)
{
    XElement owner = new XElement("owner", "mshijie");
    p.Add(owner);
}
element.Save("NewPets.xml");

 

删除节点

var query = from pet in element.Elements("pet")
            select pet;
foreach (var p in query)
{
    p.Element("owner").Remove();
}
element.Save("NewPets.xml");

五、访问节点属性

XElement element = XElement.Load("MyPets.xml");
var query = from pet in element.Elements("pet")
            select pet;
foreach (var p in query)
{
    XAttribute attr = new XAttribute("size", "small");
    p.Add(attr);//添加属性

    p.Attribute("size").Remove();//删除属性
                   
}
element.Save("NewPets.xml");

六、创建xml文档

XElement contacts =
  new XElement("Contacts",
      new XElement("Contact",
          new XElement("Name", "Patrick Hines"),
          new XElement("Phone", "206-555-0144",
              new XAttribute("Type", "Home")),
          new XElement("phone", "425-555-0145",
              new XAttribute("Type", "Work")),
          new XElement("Address",
              new XElement("Street1", "123 Main St"),
              new XElement("City", "Mercer Island"),
              new XElement("State", "WA"),
              new XElement("Postal", "68042")
          )
      )
  );

XElement构造函数接受两个参数,节点名和Content,Content可以是简单字符串,也可以的属性和子节点集合。

七、处理命名空间

创建带命名空间的xml文档

XNamespace myns = "http://www.cnblogs.com/mshijie";

XElement root = new XElement(myns + "pets",
                    new XAttribute(XNamespace.Xmlns + "myns", myns),
                    new XElement(myns + "pet",
                        new XElement(myns + "name", "Dog")));
root.Save("test.xml");

test.xml

<?xml version="1.0" encoding="utf-8"?>
<myns:pets xmlns:myns="http://www.cnblogs.com/mshijie">
  <myns:pet>
    <myns:name>Dog</myns:name>
  </myns:pet>
</myns:pets>

查询

XNamespace myns = "http://www.cnblogs.com/mshijie";
XElement pets = XElement.Load("test.xml");

var query = from pet in pets.Elements(myns + "pet")
            select pet;

Array.ForEach(query.ToArray(), p => Console.WriteLine(p.Element(myns + "name").Value));

16、LINQ 操作符与 LINQ to XML 入门 本文介绍了 LINQ 的非延迟操作符,如 Max、Average 和 Aggregate 的使用方法及示例,并详细讲解了 LINQ to XML 的基本概念和实际应用。通过对比传统的 XML DOM API,展示了 LINQ to XML 在代码简洁性、灵活性和可维护性方面的优势。同时,结合数据存储与查询的案例,分析了 LINQ to XML 的应用场景,并与其他数据存储方式进行了对比,最后给出了性能优化建议和未来展望。 阅读详情

相关推荐

1、探索LINQ:数据查询的新范式

本文深入介绍了LINQ(Language Integrated Query)这一革命性的数据查询技术,涵盖了LINQ的基础概念、应用场景以及在.NET开发中的重要作用。通过具体的代码示例,展示了如何使用LINQ查询字符串数组、XML数据和SQL Server数据库,并探讨了LINQ与传统查询方式的不同之处。此外,文章还讲解了LINQ背后的C#语言增强特性,如Lambda表达式、表达式树、扩展方法等,并介绍了LINQ查询的两种语法形式以及延迟和非延迟操作符的区别。无论你是初学者还是有经验的开发者,都能通过本文

rr23456的博客 62

C# LINQ to XML 读取XML文件快速入门

文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 工作需要,想读取XML文件的内容,在网上找了许多资料,各种类型、方法都有。 自己水平有限,资料里的各种代码拼凑起来也容易有冲突。 所以自己整理了读取XML的简单方法,把代码整理出来。配合一些字符串处理函数,可以处理简单的XML文件。 使用控制台模板,可以直接运行代码。希望对想要快速开发的初学者有所帮助。 一、什么是XML? 关于定义网上有很多,这里摘抄一下: XML...

wujinglin7的博客 1510

BQ25713寄存器配置全解析:从基础原理到笔记本充电实战

在电源管理系统中,寄存器配置是实现精细化控制的核心技术。其原理是通过I2C等总线向芯片内部特定地址写入二进制代码,直接设定其工作参数与行为逻辑,从而实现对电压、电流、功率及保护阈值的底层控制。这项技术的价值在于,它能将通用电源管理芯片灵活适配于千差万别的具体应用,是提升系统性能、可靠性与能效的关键。在便携设备、嵌入式系统等场景中,精准的寄存器配置决定了充电效率、动态响应和故障保护能力。本文聚焦于**BQ25713**这款经典充电管理芯片,深入剖析其**ChargeOption**、**ProchotOpti

weixin_42713608的博客 286

LINQ To XML 入门(1)

LINQ To XML 入门(1)

logo616的专栏 1256

杭电计算机组成原理课程设计-实验七-寄存器堆设计实验

寄存器堆实验实验原理实验内容模块功能说明模块逻辑引脚图寄存器堆模块代码REG模块测试用例REG-ALU测试用例实验结果记录 寄存器堆实验结果及分析ALU_REG运算器模块实验结果及分析探索与思考 实验原理   32×32位的寄存器堆模块示意图如图所示,含有32个寄存器,每个寄存器32位。该寄存器堆具有A和B两个读端口,分别由 5 位的寄存器编号 R_Addr_A 和 R_Addr_B 来寻址 2 个寄存器,读出的数据则由 R_Data_A(32 位)和R_Data_B(32 位)输出。读访问时,没有使能或者

HDU-整蛊小子-⏰☂️/蚂蚁集团研发工程师 1万+

【STM32Cube HAL】输入捕获(六)——脉宽测量

1

HAHAHA 4909

LINQ To XML 入门(3)

Some Common Operations using LINQ To XML - Part III In this article, we will explore some common ‘How Do I’ kind of examples using LINQ to XML. This article is the final part of our 3-part LINQ to XML series. I assume you are familiar with LINQ. If not, yo

logo616的专栏 1182

基于Simulink的光储系统黑启动能力仿真

本文基于Simulink平台构建了光储系统黑启动仿真模型,详细阐述了储能VF控制、光伏孤岛MPPT和同步并网等核心控制策略。通过分阶段协调控制(储能启动→关键负载→光伏接入→非关键负载→同步并网),实现了60秒内恢复供电、母线电压波动<5%的性能指标。仿真结果表明,协调控制策略相比无序启动可显著提升系统稳定性,避免电压崩溃和负载跳闸。文章还提供了完整的建模步骤、核心代码及进阶优化方向,为微电网应急供电设计提供了实用参考。该模型适用于光伏储能系统的黑启动能力验证和优化研究。

amy_mhd的博客 106

LINQ To XML 入门(2)

Some Common Operations using LINQ To XML - Part II In this article, we will explore some common ‘How Do I’ kind of examples using LINQ to XML. This article is the Part II of the 3-part LINQ to XML series. I hope you have read the previous article Some Comm

logo616的专栏 747

人工智能大模型原理与应用实战:AI模型转换为API的步骤和方法

传统的开发模式下,构建复杂的软件系统是非常费时费力的,而通过云计算、微服务等技术手段可以实现快速部署、弹性扩展的能力。在这种背景下,越来越多的公司将重点转移到研发人员的产品思维上,希望能够将自己的AI模型转换为一个可供他人调用的API接口。但是对于许多从事AI领域的研发人员来说,如何将自己的AI模型转换为API是一个比较棘手的问题。在这篇文章中,作者将从AI模型转换为API的过程分为以下几个步骤:AI模型准备阶段——模型选择、数据准备、模型训练。

AI天才研究院 2601

KylinOS 离线安装 MinIO【图文步骤】

在国产操作系统 KylinOS 中安装 MinIO,详细步骤...

甘蓝的专栏 1538

【转】LINQ To XML 入门(2)

【转】LINQ To XML 入门(2) Some Common Operations using LINQ To XML - Part II   In this article, we will explore some common ‘How Do I’

wl58796351的专栏 685

Cursor使用教程:用 Cursor 创建第一个 Java 项目

Cursor是一款基于VS Code的AI编程编辑器,专为开发者设计。安装前需确保JDK 8+、Maven 3.8+等环境配置,支持Windows系统。编辑器提供中文界面选项,可通过扩展市场安装语言包。创建Java项目支持手动和AI提示词两种方式:手动需创建目录结构并编写代码;AI方式则通过自然语言描述快速生成项目框架和代码。标准Java项目包含src/main/java主代码目录、src/test/java测试目录及pom.xml等配置文件。Maven项目中,pom.xml是核心配置文件,管理项目依赖与构

博客 3549

AI智能体丨使用Coze一键生成道教国学智慧语录视频,涨粉快好变现!(附保姆级教程)

该教程详解如何通过自动化流程批量制作道家国学视频,将晦涩哲理转化为轻量化内容,适配短视频平台需求。

李同学Lino的博客 3502

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linq To Xml一句入门

上次写了篇Linq To Xml 增删改查 自以为对Linq To Xml差不多入门了,结果实际工作中遇到一个简单的子级查询就绊住了。园子里高人比较多,帮我写句很经典的Linq语句,让体验到Linq的强大与高深。先看这句经典代码吧。 大气象 string xml = @"&lt;?xml version=""1.0"" encoding=""utf-8"" ?&gt;&lt;root&

weixin_34253126的博客 89

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[原创]Linq to xml增删改查Linq 入门篇:分分钟带你遨游Linq to xml的世界

本文原始作者博客 http://www.cnblogs.com/toutou Linq 入门篇(一):分分钟带你遨游linq to xml的世界   本文原创来自博客园 请叫我头头哥的博客, 请尊重版权,跳转至原博文预览。 1.Linq简介 2.Linq案例 创建文件 增 ...

weixin_34128237的博客 82

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinQ实战学习笔记(一) LINQ to (Objects, XML, SQL) 入门初步

LINQ对于笔者来说, 优美而浓缩的代码让人震惊. 研究LINQ就是在艺术化自己的代码. 之前只是走马观花学会了基本的语法, 但是经常在优快云看到令人惊讶自叹不如的LINQ代码, 还是让人羡慕嫉妒恨, 真有一种心血来潮想追赶的冲动. 所以, 还是决定系统的学习一下LINQ.   (1.4) LINQ to Objects 这是一个简单的hello world性质的例子.   ...

weixin_33834075的博客 157

LINQ实战阅读笔记---第九章 LINQ to XML 入门

LINQ to XML 设计原则:为了让大多数开发人员能够更加简单有效地操作XML,微软在LINQto XML 中设计了一种全新的方式。无论是从概念的角度考虑,还是从内存占用以及性能方面分析,LINQ to XML都是一种轻量级的XML编程API。        为了能够清楚的表述出LINQ to XML的设计原则,我们先来使用当前最为流行的XML编程API—DOM  来创建一个简单的XML文档

zaocha321的专栏 935

LINQ TO XML学习

1、强大的集成在VS2008的XML编辑器下载地址: http://www.altova.com/ ,在这个网站上分别下载XMLSpyEnt2008.exe ,XMLSpyIntegrationPackage2008.exe两个文件。 2、中文版的MSDN LINQ  TO XML学习地址: http://msdn.microsoft.com/zh-cn/library/bb38709

linuux的专栏 525

LinQ in Action 学习第一章 例子。

最近用Entity Framework 做了个mvc 的小例子,发现代码中用LinQ 语法还是很多的,决定好好研究一下LinQ,补一下.net 的技术,是不是大家都对这些技术很熟了,,因为项目简单,都没怎么用。 参考书 Linq IN Action 中英文版对照, 也不知道这本是不是最好的介绍LinQ的书,看网上的评价还是可以的。 可以去皮皮书屋下载。 如果有更好的书推荐,欢迎大家...

weixin_30553065的博客 178

C# 技术使用笔记:Linq 使用从入门到精通

用于查询内存中的集合和数组,如List<T>Array等。它是LINQ的基础实现,为其他LINQ提供程序提供了参考和模板。:专门用于查询ADO.NET数据集中的数据。它使得数据集的查询操作更加灵活和高效,可以像操作内存集合一样查询数据集。:用于查询和修改SQL Server数据库中的数据。它通过对象关系映射(ORM)技术,将数据库表映射为C#中的类,使得开发者可以使用LINQ语法直接操作数据库,而无需编写SQL语句。:用于操作XML文档。

caifox的博客 840

C# LINQ 全语法手册:从基础到高级(2026最新版)

本文全面介绍C# LINQ技术,涵盖查询语法和方法语法两大核心体系。主要内容包括:LINQ基础概念(延迟执行、表达式树等)、环境准备、两种语法体系的对比选择原则,以及查询语法中的基础关键字(from/select/where/orderby)和高级分组连接关键字(group/join/into/let)。文中提供了完整的测试数据源和可运行示例代码,帮助开发者从零基础到进阶掌握LINQ技术。文章特别强调语法选择策略,建议简单查询使用类SQL的查询语法,复杂场景则采用灵活的方法语法。

野夫怒见不平事,磨损胸中万古刀! 815
上一篇: 如何创建、发布Web Service和 C#WINFORM里如何调用WEB Service API
下一篇: PowerDesigner UML 建模
blacksource
博客等级 码龄21年 66粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值