博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq学习总结2--Linq to XML
阅读量:7051 次
发布时间:2019-06-28

本文共 2862 字,大约阅读时间需要 9 分钟。

概述:

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
dic)15 {16 bool flag = true;17 foreach (KeyValuePair
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 }
View Code

删除和修改节点

...//修改节点 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 nodeif (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);

多多练习方能掌握.

 

转载于:https://www.cnblogs.com/fanglorry/p/4345569.html

你可能感兴趣的文章
BestCoder Round #11 (Div. 2)
查看>>
JAVA入门[20]-Spring Data JPA简单示例
查看>>
Python: The _imagingft C module is not installed错误的解决
查看>>
HTTP请求报文和HTTP响应报文
查看>>
第3课 - 初识程序的灵魂
查看>>
WordPress插件扫描工具plecost
查看>>
【PDF】Java操作PDF之iText超入门
查看>>
PHP:第五章——字符串过滤函数
查看>>
Spring中ApplicationContextAware的用法
查看>>
flask的session解读及flask_login登录过程研究
查看>>
ElasticSearch单机多实例环境部署
查看>>
python 练习
查看>>
Centos 安装 nload
查看>>
python3简单使用requests
查看>>
由一次java作业 引起的思考
查看>>
HDU 3389 Game(博弈)
查看>>
仅IE支持clearAttributes/mergeAttributes方法
查看>>
Linux中U盘和SD卡加载卸载命令
查看>>
github push403错误的处理
查看>>
Hibernate与 MyBatis的比较
查看>>