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; }
}
}
ling to xml 实现 增删改查 功能
最新推荐文章于 2020-03-30 08:22:58 发布