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进行操作了.
下面是最近的小项目中为节点增加子节点和属性的部分源码:
public static bool addElement(XElement xeleNode,string addEleType, string strContralName,string strContent)
{
XElement xeleChild = new XElement(addEleType);
xeleChild.Add(new XAttribute(strContralName,strContent));
//判斷有木有此子控件
if ( xeleNode.Elements().Count() > && xeleNode.Elements().Where(p => p.Attribute(strContralName).Value == strContent).Count() > )
return false;
xeleNode.Add(xeleChild); return true; } public static bool addAttr(XElement xeleNode, Dictionary<string, string> dic)
{
bool flag = true;
foreach (KeyValuePair<string, string> pair in dic)
{
if (xeleNode.Elements().Where(p => p.Attribute("Name").Value == pair.Key).Count() > )
{
flag = false;
continue;
}
XElement xeleChild = new XElement("Attribute");
xeleChild.Add(new XAttribute("Name",pair.Key.ToString()));
xeleChild.Value = pair.Value.ToString();
xeleNode.Add(xeleChild);
}
return flag;
}
删除和修改节点
...
//修改节点
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);
多多练习方能掌握.
Linq学习总结2--Linq to XML的更多相关文章
- Linq学习<五> 运用linq查询Xml
这节将学习如何用 linq查询xml 一.我们先看看在xml中我们怎么操作 public void xmlWayToQueryXmlFile() { XmlDocument xmldoc = new ...
- Linq学习之旅——LINQ查询表达式
1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. 概述 ...
- Linq学习(一)-初涉Linq
一.何谓LINQ LINQ:Language Integrated Query语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换 二.优点与缺点 优点:封 ...
- LINQ to XML LINQ学习第一篇
LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...
- Linq学习笔记---Linq to Xml操作
LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument EmptySequence 获取空的元素集合 FirstAttribut ...
- (转)Linq学习笔记
写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...
- C#之Linq学习笔记【转】
写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...
- Linq学习以及简单用法
Linq学习 Linq(language Intergrated Query)即语言集成查询 LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询.用于保存和检索来自不同数据源的数据, ...
- linq学习笔记
最近在学习linq的一些基础知识,看了c#高级编程及阅读了园子内部几篇优秀的博文,有所体会,感觉应该记录下来,作为以后复习使用.都是一些最基础的知识,大致分为三个部分:linq预备知识:linq查询: ...
- Linq学习工具及Lamada表达式
好东西.转载一个.以备学习 Linq学习工具: http://www.linqpad.net/ Lamada表达式: Func<int, int, int> IntPow = (x ...
随机推荐
- SQL Server 2014连接不到服务器解决方法
多半是不小心使用qq管家之类软件加速系统时把SQL Server(MSSSQL)不小心关闭了 解决方法如下(以WIN8为例):
- angular-ui-router中的$stateProvider设置
$stateProvider .state('contacts.list', { url: '', templateUrl: 'contacts.list.html' }) .state('conta ...
- 解决driver.findElement(By)运行到此处报null指针问题
1.由于自动化页面上的元素定位太多,主要是通过By来定位,而By提供了id,xpath,name差不多就可以定位到元素 可以使用一个配置文件存储页面上的定位By值,然后从配置文件获取by值,行程by方 ...
- ftgl 绘制文字
FTFont* ftfont = new FTGLPixmapFont(); ftfont->Open("D:/SIMHEI.ttf"); ftfont->FaceSi ...
- C++11新特性学习
http://www.cprogramming.com/c++11/c++11-lambda-closures.html
- AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案
AntiXSS v4.0中Sanitizer.GetSafeHtmlFragment等方法将部分汉字编码为乱码的解决方案 以下代码为asp.net环境下,c#语言编写的解决方案.数据用Dictiona ...
- Linux版Matlab R2015b的bug——脚本运行的陷阱(未解决)
0 系统+软件版本 系统:CentOS 6.7 x64, 内核 2.6.32-573.el6.x86_64软件:Matlab R2015b(包括威锋网和东北大学ipv6下载的资源,都测试过) 1 脚本 ...
- μC/OS-Ⅲ系统的时间管理函数和定时器
一.时间管理函数 μC/OS-Ⅲ系统提供一些列时间管理服务函数: 1.OSTimeDly():任务延时n个时钟节拍. 2.OSTimeDlyHMSM():任务延时指定的时间,采用“时:分:秒:毫秒”方 ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
- Bootstrap <基础十九>分页
Bootstrap 支持的分页特性.分页(Pagination),是一种无序列表,Bootstrap 像处理其他界面元素一样处理分页. 分页(Pagination) 下表列出了 Bootstrap 提 ...