xml

王朝学院·作者佚名  2016-05-20
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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 }

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);

多多练习方能掌握.

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航