ling to xml 实现 增删改查 功能

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace ConsoleLing
{
    class LingToXml
    {
        public static string xmlPath = AppDomain.CurrentDomain.BaseDirectory + "Adverts.xml";
	//生成xml
        public static void GenerateXmlFile()
        {
            try
            {
                XDocument advertDoc = new XDocument(
                    //new XAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"),
                    //new XAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"),
                    new XElement("ArrayOfAdvert",
                        new XElement("Advert",
                            new XAttribute("Name", "NameTest"),
                            new XAttribute("Display", "true"),
                            new XAttribute("Rank", "RankTest"),
                            new XAttribute("AdvertID", "AdvertIDTest"),
                            new XElement("Title", "TitleTest"),
                            new XElement("ImageUrl", "ImageUrlTest"),
                            new XElement("ImageAlt", "ImageAltTest"),
                            new XElement("Description", "DescriptionTest"),
                            new XElement("NavigationUrl", "NavigationUrlTest")
                            )
                        ));
                advertDoc.Save(xmlPath);
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
        }
	//生成行的id
        public static int getNewAdvertID()
        {
            int advertID = 0;
            try
            {
                XElement rootNode = XElement.Load(xmlPath);
                IEnumerable<XElement> adverts =
                    from node in rootNode.Descendants("Advert")
                    select node;
                if (adverts.Count() > 0)
                    advertID = Convert.ToInt32(adverts.Max(row => row.Attribute("AdvertID").Value)) + 1;
                else
                    advertID = 1;
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
            return advertID;
        }
	//得到对象列表
        public static List<Advert> GetAll()
        {
            List<Advert> lstAdvert = new List<Advert>();
            try
            {
                XElement rootNode = XElement.Load(xmlPath);
                IEnumerable<Advert> adverts =
                    from node in rootNode.Descendants("Advert")
                    //where Convert.ToBoolean(node.Attribute("Display").Value) == true
                    select new Advert
                    {
                        AdvertID = Convert.ToInt32(node.Attribute("AdvertID").Value),
                        Display = Convert.ToBoolean(node.Attribute("Display").Value),
                        Name = node.Attribute("Name").Value,
                        Rank = Convert.ToInt32(node.Attribute("Rank").Value),
                        Title = node.Element("Title").Value,
                        ImageUrl = node.Element("ImageUrl").Value,
                        ImageAlt = node.Element("ImageAlt").Value,
                        Description = node.Element("Description").Value,
                        NavigationUrl = node.Element("NavigationUrl").Value
                    };
                lstAdvert = adverts.ToList();
                return lstAdvert;
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
            return lstAdvert;
        }
	//通过id得到对象
        public static Advert GetByAdvertID(int advertID)
        {
            Advert objAdvert = new Advert();
            try
            {
                XElement rootNode = XElement.Load(xmlPath);
                IEnumerable<Advert> adverts =
                    from node in rootNode.Descendants("Advert")
                    where Convert.ToBoolean(node.Attribute("Display").Value) == true
                    && Convert.ToInt32(node.Attribute("AdvertID").Value) == advertID
                    select new Advert
                    {
                        AdvertID = Convert.ToInt32(node.Attribute("AdvertID").Value),
                        Display = Convert.ToBoolean(node.Attribute("Display").Value),
                        Name = node.Attribute("Name").Value,
                        Rank = Convert.ToInt32(node.Attribute("Rank").Value),
                        Title = node.Element("Title").Value,
                        ImageUrl = node.Element("ImageUrl").Value,
                        ImageAlt = node.Element("ImageAlt").Value,
                        Description = node.Element("Description").Value,
                        NavigationUrl = node.Element("NavigationUrl").Value
                    };
                objAdvert = adverts.FirstOrDefault();
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
            return objAdvert;
        }
	//添加对象
        public static void Add(Advert objAdvert)
        {
            try
            {
                XElement rootNode = XElement.Load(xmlPath);
                XElement newNode = new XElement("Advert",
                    new XAttribute("Name", objAdvert.Name),
                    new XAttribute("Display", objAdvert.Display),
                    new XAttribute("Rank", objAdvert.Rank),
                    new XAttribute("AdvertID", objAdvert.AdvertID),
                    new XElement("Title", objAdvert.Title),
                    new XElement("ImageUrl", objAdvert.ImageUrl),
                    new XElement("ImageAlt", objAdvert.ImageAlt),
                    new XElement("Description", objAdvert.Description),
                    new XElement("NavigationUrl", objAdvert.NavigationUrl)
                    );
                rootNode.Add(newNode);
                rootNode.Save(xmlPath);
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
        }
	//更新对象
        public static void Update(Advert objAdvert)
        {
            try
            {
                XElement rootNode = XElement.Load(xmlPath);
                IEnumerable<XElement> advertNodes =
                    from node in rootNode.Descendants("Advert")
                    where Convert.ToBoolean(node.Attribute("Display").Value) == true
                    && Convert.ToInt32(node.Attribute("AdvertID").Value) == objAdvert.AdvertID
                    select node;
                XElement advertNode = advertNodes.FirstOrDefault();
                if (advertNode == null)
                    return;
                advertNode.Attribute("AdvertID").SetValue(objAdvert.AdvertID);
                advertNode.Attribute("Display").SetValue(objAdvert.Display);
                advertNode.Attribute("Name").SetValue(objAdvert.Name);
                advertNode.Attribute("Rank").SetValue(objAdvert.Rank);
                advertNode.Element("Title").SetValue(objAdvert.Title);
                advertNode.Element("ImageUrl").SetValue(objAdvert.ImageUrl);
                advertNode.Element("ImageAlt").SetValue(objAdvert.ImageAlt);
                advertNode.Element("Description").SetValue(objAdvert.Description);
                advertNode.Element("NavigationUrl").SetValue(objAdvert.NavigationUrl);
                rootNode.Save(xmlPath);
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }
        }
	//删除对象
        public static void Delete(int advertID)
        {
            try
            {
                XElement rootNode = XElement.Load(xmlPath);
                IEnumerable<XElement> targetNodes =
                    from node in rootNode.Descendants("Advert")
                    where node.Attribute("AdvertID").Value.Equals(advertID.ToString())
                    select node;
                XElement delNode = targetNodes.FirstOrDefault();
                if (delNode == null)
                    return;
                //targetNodes.Remove();
                delNode.Remove();
                rootNode.Save(xmlPath);
            }
            catch (Exception)
            {
                
                throw;
            }
        }

    }
    public class Advert
    {
        public string Name { get; set; }
        public bool Display { get; set; }
        public int AdvertID { get; set; }
        public int Rank { get; set; }
        public string Title { get; set; }
        public string ImageUrl { get; set; }
        public string ImageAlt { get; set; }
        public string Description { get; set; }
        public string NavigationUrl { get; set; }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值