整体 感觉 使用linq to xml 操作xml文件比起使用xmlDocument类而言,开发效率上提高了不少,另外在语法上也精简了很多。
操作之前,需要引入 命名空间
using System.Xml.Linq;xml数据结构无非就是节点(Node),再者是节点中的属性(Attribute)。
首先介绍 几个常用类:
XElement : 它就表示一个xml元素,用来加载xml文件,操作xml节点,获取节点下的元素集合(Elements)等。
1.加载Xml文件
string filePath = @"D:\a.xml" private XElement xmlDoc = XElement.Load(filePath);2.获取某个元素下的node集合
IEnumerable<XElement> elementCollection = xmlDoc.Elements("Group");Elements 是一个实现IEnumerable接口的集合,集合中的类型也为XElement类型,所以该属性返回的集合为 IEnumerable<XElement>。 这里获取的所有节点名为Group的所有元素。
3.获取某个元素下的Attribute集合
一般的xml文件都会包括节点属性,那么获取节点属性也有对应的方法。
IEnumerable<XAttribute> attributeCollection=elementCollection.Elements("Role").Attributes("Name");该集合中的类型为XAttribute,表示元素的属性。
4.获取IEnumerable集合中的数据
var query = from p in elementCollection select p;5.同时获取集合中的元素和元素属性
var query = from q in elementCollection select new { p.Element("Name").Value,// 获取元素值 p.Attribute("Tag").Value // 获取属性值 };6.将xml字符串转成xml文件。
XElement xml = XElement.Parse("xml字符串");7.新增元素,修改,保存
XElement carElement = new XElement("Car",new XAttribute("Id",entity.Id),new XAttribute("Width",entity.Width),new XAttribute("Height",entity.Height),new XAttribute("IsSelected",entity.IsSelected.ToString()),new XAttribute("CollectionName",entity.CollectionName),new XAttribute("GroupName",entity.GroupName),new XElement("Name",entity.Name),new XElement("IP",entity.IP),new XElement("X",entity.X),new XElement("Y",entity.Y) ); this.xmlDoc.Add(carElement);修改节点的值:
element.SetElementValue("Name",entity.Name);修改节点属性的值:
element.SetAttributeValue("Height",entity.Height);保存:
this.xmlDoc.Save(filePath);
还有很多对元素节点的操作,这都不说了。具体参见