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(); }
原文地址:https://www.cnblogs.com/jiangqiang/p/2790047.html