Linq学习总结2--Linq to XML

概述:

linq to xml(下面简称ltx好了),是微软根据linq技术对于XML的CURD.使用起来比System.XML中的XML操作方式更加简便.这段时间使用它在公司里升级了老板的邮件系统,颇有心得,现在总结一下.

主要对象:

1.XDocument:XML文档对象,载入方式是根据其静态方法载入XML文档: XDocument xDoc = XDocument.load(@"**xml路径**")

  .Element("NodeName") 获得子节点XElement对象,XDoc下一般是根节点

  .Sava("xmlpath") 保存文档到xml文件

XElement xele =  xdocTypeDef.Element("root").Elements().Where(p => p.Attribute("Name").Value == strTopName).Single();

2.XElement:节点对象

  .Element("NodeName") 获得子节点XElement对象

  .Elements() 返回子节点集合

  .Elements("NodeName")返回名字是"NodeName"的子节点集合

  .Add(param[] obj) 增加的可以是多个节点或是属性

  .Remove() 将节点删除.

  .value 节点属性

3.XAttribute:属性对象

知道这些就可以在结合linq就可以对XML进行操作了.

下面是最近的小项目中为节点增加子节点和属性的部分源码:

 1         public static bool addElement(XElement xeleNode,string addEleType, string strContralName,string strContent)
 2         {
 3             XElement xeleChild = new XElement(addEleType);
 4             xeleChild.Add(new XAttribute(strContralName,strContent));
 5             //判斷有木有此子控件
 6             if ( xeleNode.Elements().Count() > 0 && xeleNode.Elements().Where(p => p.Attribute(strContralName).Value == strContent).Count() > 0)
 7                 return false;
 8             xeleNode.Add(xeleChild);
 9
10             return true;
11
12         }

13
14         public static bool  addAttr(XElement xeleNode, Dictionary<string, string> dic)
15         {
16             bool flag = true;
17             foreach (KeyValuePair<string, string> pair in dic)
18             {
19                 if (xeleNode.Elements().Where(p => p.Attribute("Name").Value == pair.Key).Count() > 0)
20                 {
21                     flag = false;
22                     continue;
23                 }
24                 XElement xeleChild = new XElement("Attribute");
25                 xeleChild.Add(new XAttribute("Name",pair.Key.ToString()));
26                 xeleChild.Value = pair.Value.ToString();
27                 xeleNode.Add(xeleChild);
28             }
29             return flag;
30         }

删除和修改节点

...
//修改节点
 XElement xele =  XEleFirstNode.Elements().Where(p => p.Attribute("Name").Value == strContralName ).Single() as XElement;
            xele =  xele.Elements().Where(p => p.Attribute("Name").Value == strAttr).Single() as XElement;
            xele.Value = strAttrDes;
            xDoc.Save(strPath);

...

//del node
if (MessageBox.Show("確定刪除?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                return;
            foreach(object str  in lBAtrributes.SelectedItems) //listbox mutiselect
            {
                string strAttr = str.ToString();
                XElement xeleAttr = XEleSecondNode.Elements().Where(p => p.Attribute("Name").Value == strAttr).Single() as XElement;
                xeleAttr.Remove();
            }
            xDoc.Save(strPath);

多多练习方能掌握.

时间: 2024-10-01 11:27:14

Linq学习总结2--Linq to XML的相关文章

Linq学习随笔二------LINQ to XML

LINQ to XML LINQ to XML provides an in-memory XML programming interface that leverages the .NET Language-Integrated Query (LINQ) Framework. LINQ to XML uses the latest .NET Framework language capabilities and is comparable to an updated, redesigned D

Linq学习之旅——LINQ查询表达式

1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. 概述 LINQ的全称是Language Integrated Query,中文译成“语言集成查询”.LINQ作为一种查询技术,首先要解决数据源的封装,大致使用了三大组件来实现这个封装,分别是LINQ to Object.LINQ to ADO.NET.LINQ to XML.它们和.NET语言的关系如下:

Linq学习(一)-初涉Linq

一.何谓LINQ LINQ:Language Integrated Query语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换 二.优点与缺点 优点:封装了SQL语句,只对对象进行操作,代码量减少 缺点:追求效益的同时牺牲了性能,比起ADO.NET性能稍差,且对复制的sql语句也不好操作 三.支持那些查询 联合.分组.排序.连接查询 四.何谓Linq to sql Linq to sql是LINQ的一部分,全称基于关系型数据库的DotNet语言集成

Linq学习随笔一------LINQ to Objects

Linq是Language Integrated Query的简称,它是C# 3.0中新添加的,包含在微软.net framework 3.5,用以简化查询查询操作.它主要包含了3块,Linq to Object.Linq to SQL.Linq to XML,其中Linq to Object和对于对象的查询,Linq to XML则又提供了对XML格式数据的检索.设置等功能,Linq to SQL顾名思义就是针对SQL的功能. 一.LINQ to Objects The term "LINQ

Linq学习随笔三------LINQ to SQL

LINQ to SQL provides a run-time infrastructure for managing relational data as objects. In LINQ to SQL, the data model of a relational database is mapped to an object model expressed in the programming language of the developer. When you execute the

Linq 学习之一 (Linq与DataTable)

将一个dataTABLE转化成linq: 1 DataTable dtChangeDetail = new DataTable(); 2 dtChangeDetail.Columns.Add("IsModi",typeof(Boolean)); //记录是否变动 3 dtChangeDetail.Columns.Add("FromDeptID", typeof(Int32)); 4 dtChangeDetail.Columns.Add("FromPostI

Linq学习笔记---Linq to Xml操作

LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument  EmptySequence  获取空的元素集合  FirstAttribute  获取此元素的第一个属性  FirstNode  获取此节点的第一个子节点  HasAttributes  获取一个值,该值指示此元素是否至少具有一个属性  HasElements  获取一个值,该值指示此元素是否至少具有一个子元素  IsEmpty  获取一个值,该值指示此元素是否不包含内容

Linq 学习笔记

简介: LINQ 提供一种统一的方式,让我们能在C#语言中直接查询和操作各种数据.?? LINQ是用来描述数据访问总体方式的术语.LINQ to Object是针对实现了IEnumerable<T>的对象的LINQ:LINQ to SQL是针对关系数据库的LINQ:LINQ to XML是针对XML文档的LINQ.? ? LINQ除了提供一个统一的API来操作各种数据,并且为我们提供了编译时类型检查和动态创建查询表达式的能力.? LIINQ相关的C#语言功能 1.隐式类型局部变量 局部变量用v

Linq学习(二)-LinQ to Entity

在昨天我学习了LinQ的一些基础知识和动手写了一些LinQ to Object的例子的基础上,对于LinQ语法和基本的要点有了一定的了解.今天继续自己的学习,对于今天学习的LinQ to DataSet 和LinQ to Entity做自己的一些总结,一方面加深自己的理解,另一方面也能掌握LinQ技术的实现机制,对于也跟我一样对着一方面有兴趣的也可以让大家有个初步的感性认识,也是好的. 今天主要的篇幅会讲解LinQ to Entity的C#实现机制以及解决昨天我看完一小节之后的两点疑惑,后面会花

C#之Linq学习笔记【转】

写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些兴趣,所以打算整理点东西出来跟大家一起做个分享. 什么是Linq LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知.静态类型等强类型语言的好处.并