概述:

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的更多相关文章

  1. Linq学习<五> 运用linq查询Xml

    这节将学习如何用 linq查询xml 一.我们先看看在xml中我们怎么操作 public void xmlWayToQueryXmlFile() { XmlDocument xmldoc = new ...

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

    1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小结 1. 概述 ...

  3. Linq学习(一)-初涉Linq

    一.何谓LINQ LINQ:Language Integrated Query语言集成查询,其本质是对ADO.NET结果集通过反射连同泛型特性转换成对象集,实现OR模型的转换 二.优点与缺点 优点:封 ...

  4. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

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

    LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument  EmptySequence  获取空的元素集合  FirstAttribut ...

  6. (转)Linq学习笔记

    写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...

  7. C#之Linq学习笔记【转】

    写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...

  8. Linq学习以及简单用法

    Linq学习 Linq(language Intergrated Query)即语言集成查询 LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询.用于保存和检索来自不同数据源的数据, ...

  9. linq学习笔记

    最近在学习linq的一些基础知识,看了c#高级编程及阅读了园子内部几篇优秀的博文,有所体会,感觉应该记录下来,作为以后复习使用.都是一些最基础的知识,大致分为三个部分:linq预备知识:linq查询: ...

  10. Linq学习工具及Lamada表达式

    好东西.转载一个.以备学习 Linq学习工具:     http://www.linqpad.net/ Lamada表达式: Func<int, int, int> IntPow = (x ...

随机推荐

  1. xampp 端口冲突

    最近使用xampp ,提示端口有问题,使用xampp自带的 xampp control修改的端口之后还是不行. 如果是apache端口有问题就修改 xampp\apache\conf\ httpd.c ...

  2. UI测试 错题分析

    从服务器端获取的json对象,可以直接访问对象中的属性 该属性的作用就是C text属性显示节点文本,state属性默认为open 看错行  不能用 ' ' 包裹 state:节点状态,'open' ...

  3. 基础算法之快速排序Quick Sort

    原理 快速排序(Quicksort)是对冒泡排序的一种改进. 从数列中挑出一个元素,称为"基准"(pivot); 排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的 ...

  4. vue的选项

    这篇是我自己看着方便整理的,请直接看官方api:http://cn.vuejs.org/v2/api/ 数据 data,props,computed 注意,不应该使用箭头函数来定义计算属性函数 (例如 ...

  5. 用于阻止div上的事件和div上的按钮的事件同时触发

    event.stopPropagation()  阻止事件冒泡  用于ie11以上

  6. WebService的两种方式Soap和Rest比较

    我的读后感:由于第一次接触WebService,对于很多概念不太理解,尤其是看到各个OpenAPI的不同提供方式时,更加疑惑.如google map api采用了AJAX方式,通过javascript ...

  7. CentOS6.4下基于Nginx搭建mp4/flv流媒体服务器

    我的步骤如下:1. 安装依赖包: yum install glibc.i686#yum –y update#yum -y install gcc glibc glibc-devel make nasm ...

  8. 运维之netstat

    实用命令实例   1. 列出所有端口 (包括监听和未监听的)   列出所有端口 netstat -a # netstat -a | more Active Internet connections ( ...

  9. [css]水平垂直居中的方法

    1.top:cale(50% - 2rem); left:cale(50% - 2rem);

  10. Ubuntu导入证书

    (*.cer) 首先我们得进入JAVA_HOME目录(查看/etc/profile文件),然后进去以下路径/opt/jdk1.5.0_11/jre/lib/security/ 将证书放进去,假如说是1 ...