使用LinqToXML增删

2 篇文章 0 订阅
1 篇文章 0 订阅
using System.IO;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

public class CustomStockXMLOperate
{
    XDocument xdoc;
    string filePath;
 
    /// <summary>
    /// 加载CustomStock.xml文件
    /// </summary>
    /// <param name="filePath"></param>
    public void LoadXml(string filePath)
    {
 
        this.filePath = filePath;
        if (!System.IO.File.Exists(filePath))
            CreateCustomStockXML(filePath);
 
        xdoc = XDocument.Load(filePath);
 
    }
 
    /// <summary>
    /// 加入股票
    /// </summary>
    /// <returns></returns>
    public void AddStock(List<StockObj> stocks)
    {
        try
        {
 
            if (!xdoc.Root.HasElements)
            {
                foreach (var model in stocks)
                {
                    AddStock(model);
                }
            }
            else
            {
                foreach (var model in stocks)
                {
                    if (!IsStockExist(model))
                        AddStock(model);
                }
            }
 
            xdoc.Save(filePath);
        }
        catch (Exception ex)
        {
            Logging.Log.Write("CustomStockXMLOperate.cs-AddStock(List<StockObj> stocks)出错" + ex.ToString(), Logging.LogType.Debug, ex);
        }
    }
 
    /// <summary>
    /// 删除股票
    /// </summary>
    /// <param name="stocks"></param>
    public void DelStock(List<StockObj> stocks)
    {
        try
        {
 
            if (!xdoc.Root.HasElements)
                return;
 
            foreach (var item in stocks)
                DelStock(item);
 
            xdoc.Save(filePath);
        }
        catch (Exception ex)
        {
            Logging.Log.Write("CustomStockXMLOperate.cs-DelStock(List<StockObj> stocks)出错" + ex.ToString(), Logging.LogType.Debug, ex);
        }
    }
 
    private void CreateCustomStockXML(string filePath)
    {
 
        this.filePath = filePath;
        xdoc = new XDocument(new XElement("CustomStockRoot"));
        xdoc.Save(filePath);
 
    }
    private bool IsStockExist(StockObj model)
    {
        return xdoc.Root.Descendants("Info").Where(x => x.Attribute("StockCode").Value == model.StockCode && x.Attribute("MarketType").Value == model.MarketType.ToString()).Count() > 0 ? true : false;
    }
    private void AddStock(StockObj model)
    {
 
        xdoc.Root.Add(new XElement("Info",
            new XAttribute("StockCode", model.StockCode),
            new XAttribute("StockName", model.StockName),
            new XAttribute("MarketType", model.MarketType.ToString()),
            new XAttribute("Type", model.Type.ToString()),
            new XAttribute("JoinTime", model.JoinTime.ToString()),
             new XAttribute("Note", model.Note))
            );
 
    }
    private void DelStock(StockObj model)
    {
        if (!xdoc.Root.HasElements)
            return;
        var item = xdoc.Root.Elements("Info").Where(x => x.Attribute("StockCode").Value == model.StockCode && x.Attribute("MarketType").Value == model.MarketType.ToString()).Single();
 
        if (item != null)
            (item as XElement).Remove();
 
    }
}



使用效果如下:
<?xml version="1.0" encoding="utf-8"?>
<CustomStockRoot>
  <Info Code="000001" Name="上证指数" MarketType="SSE" SecurityType="index" SimplePinYinName="" />
  <Info Code="399001" Name="深证成指" MarketType="SZSE" SecurityType="index" SimplePinYinName="" />
  <Info Code="000004" Name="国农科技" MarketType="SZSE" SecurityType="stock" SimplePinYinName="" />
  <Info Code="000001" Name="平安银行" MarketType="SZSE" SecurityType="stock" SimplePinYinName="" />
  <Info Code="000002" Name="万科A" MarketType="SZSE" SecurityType="stock" SimplePinYinName="" />
  <Info Code="000005" Name="世纪星源" MarketType="SZSE" SecurityType="stock" SimplePinYinName="" />
</CustomStockRoot>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值