Linq to XML
XML 用处很广不做介绍,最近用到.NET 操作XML,比较了一下,感觉还是Linq to XML比较简单,直观,易学。这里简单把Ling To XML 正删改查,写几个小例子。已加深对其理解。
1. 新建,保存
/// <summary> /// 保存XML文件 /// </summary> /// <param name="messageList">实体集合</param> public void Save(List<Message> messageList) { //声明一个XDocument XDocument xdo = null; //判断文件是否存在 if (!File.Exists(Server.MapPath("data.xml"))) { //如果不存在新建一个文件 xdo = new XDocument( new XElement("Message", "") ); //将文件保存 xdo.Save(AppDomain.CurrentDomain.BaseDirectory + "data.xml"); } else { //如果文件存在加载文件 xdo = XDocument.Load(Server.MapPath("data.xml")); } //循环添加信息 foreach (var message in messageList) { //新建一个XElement(相当于一个节点) XElement Message = new XElement("Node" , new XElement("ID", message.id) , new XElement("User", message.user) , new XElement("Msg", message.text) , new XElement("Date", message.time) ); //把新创建的节点添加到Message节点下面 xdo.Element("Message").Add(Message); } //保存文件 xdo.Save(Server.MapPath("data.xml")); }
2.查询输出
/// <summary> /// 查询 /// </summary> /// <param name="Top">返回信息的数目</param> /// <returns></returns> public string SelectXML(int Top) { XDocument xdo = null; List<XElement> xelnew = new List<XElement>(); //判断文件是否存在 if (File.Exists(Server.MapPath("data.xml"))) { //加载文件 XElement xel = XElement.Load(Server.MapPath("data.xml")); //用Linq语法直接查询 (按时间排序去前Top条信息) xelnew = (from element in xel.Elements() orderby element.Element("Date").Value descending select element) .Take(Top).ToList(); xdo = new XDocument( new XElement("Message", "")); //添加信息 foreach (var item in xelnew) { xdo.Element("Message").Add(item); } //保存信息
//AppDomain.CurrentDomain.BaseDirectory 为系统的根目录 xdo.Save(AppDomain.CurrentDomain.BaseDirectory + "Selectdata.xml"); } return xdo.ToString(); }