zoukankan      html  css  js  c++  java
  • Linq To XML

    XML 格式:

    <?xml version="1.0" encoding="utf-8"?>
    <Accounts>
      <Account>
        <DisplayedName></DisplayedName>
        <AccountName></AccountName>
        <SharedKey>=</SharedKey>
        <IsUseSSL></IsUseSSL>
        <IsDevelopmentStorage></IsDevelopmentStorage>
      </Account>
    <Account>
        <DisplayedName></DisplayedName>
        <AccountName></AccountName>
        <SharedKey>=</SharedKey>
        <IsUseSSL></IsUseSSL>
        <IsDevelopmentStorage></IsDevelopmentStorage>
      </Account>
    </Accounts>
    

      

    读写方法:

     public class Account
        {
            #region 成员
    
            static string XmlPath = @"data\Accounts.xml";
            static Security sc = new Security();
    
            #endregion
    
            #region 属性
    
            public string DisplayedName { get; set; }
            public string AccountName { get; set; }
            public string SharedKey { get; set; }
            public bool IsUseSSL { get; set; }
            public bool IsDevelopmentStorage { get; set; }
    
            #endregion
    
            #region 方法
    
            /// <summary>
            /// 创建XML
            /// </summary>
            public void CreateFile()
            {
                try
                {
                    if (!File.Exists(XmlPath))
                    {
                        //定义一个XDocument结构
                        XDocument myXDoc = new XDocument(new XElement("Accounts"));
                        //保存此结构
                        myXDoc.Save(XmlPath);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    
            /// <summary>
            /// 添加节点
            /// </summary>
            public static bool AddAccountNode(Account account)
            {
                try
                {
                    account.CreateFile();
    
                    //定义并从xml文件中加载节点(根节点)
                    XElement rootNode = XElement.Load(XmlPath);
    
                    //定义一个新节点
                    XElement newNode = new XElement("Account", new XElement("DisplayedName", account.DisplayedName),
                                                               new XElement("AccountName", account.AccountName),
                                                               new XElement("SharedKey", account.SharedKey),
                                                               new XElement("IsUseSSL", account.IsUseSSL),
                                                               new XElement("IsDevelopmentStorage", account.IsDevelopmentStorage));
                    //将此新节点添加到根节点下
                    rootNode.Add(newNode);
                    //保存对xml的更改操作
                    rootNode.Save(XmlPath);
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return false;
                }
            }
    
            /// <summary>
            /// 删除节点
            /// </summary>
            public static bool DeleteAccountNode(Account account)
            {
                try
                {
                    //定义并从xml文件中加载节点(根节点)
                    XElement rootNode = XElement.Load(XmlPath);
                    IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("Account")
                                                        where target.Element("DisplayedName").Value == account.DisplayedName
                                                        && target.Element("AccountName").Value == account.AccountName
                                                        select target;
    
                    //将获得的节点集合中的每一个节点依次从它相应的父节点中删除
                    targetNodes.Remove();
                    //保存对xml的更改操作
                    rootNode.Save(XmlPath);
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return false;
                }
            }
    
            /// <summary>
            /// 修改节点
            /// </summary>
            public static bool ModifyAccountNode(Account oldAccount, Account newAccount)
            {
                try
                {
                    XDocument myXDoc = XDocument.Load(XmlPath);
    
                    var query = myXDoc.Element("Accounts").Elements("Account").Where(a => a.Element("DisplayedName").Value == oldAccount.DisplayedName
                         && a.Element("AccountName").Value == oldAccount.AccountName).ToList();
                    if (query == null)
                    {
                        MessageBox.Show("User information does not exist, please try again later. ");
                        return false;
                    }
    
                    foreach (var q in query)
                    {
                        q.Element("DisplayedName").Value = newAccount.DisplayedName.ToString();
                        q.Element("AccountName").Value = newAccount.AccountName.ToString();
                        q.Element("SharedKey").Value = newAccount.SharedKey.ToString();
                        q.Element("IsUseSSL").Value = newAccount.IsUseSSL.ToString();
                        q.Element("IsDevelopmentStorage").Value = newAccount.IsDevelopmentStorage.ToString();
                    }
                    myXDoc.Save(XmlPath);
                    return true;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    return false;
                }
            }
    
            /// <summary>
            /// 获取节点
            /// </summary>
            public static List<Account> GetAccountNodes()
            {
                List<Account> accounts = new List<Account>();
                try
                {
                    XDocument myXDoc = XDocument.Load(XmlPath);
                    XElement rootNode = myXDoc.Element("Accounts");
                    foreach (XElement node in rootNode.Elements("Account"))
                    {
                        Account ac = new Account()
                        {
                            DisplayedName = node.Element("DisplayedName").Value,
                            AccountName = node.Element("AccountName").Value,
                            SharedKey =sc.Decrypt(node.Element("SharedKey").Value),
                            IsDevelopmentStorage = Convert.ToBoolean(node.Element("IsDevelopmentStorage").Value),
                            IsUseSSL = Convert.ToBoolean(node.Element("IsUseSSL").Value),
                        };
                        accounts.Add(ac);
                    }
                    return accounts;
                }
                catch
                {
                    return null;
                }
            }
    
            #endregion
        }
  • 相关阅读:
    树莓派3 基于Ubuntu mate 16.04的无线WIFI连接
    Linux实现树莓派3B的国密SM9算法交叉编译——(三)国密SM9算法实现
    Eclipse配置C++11环境详细介绍
    Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成
    Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试
    提高github下载速度的方法【100%有效】可达到2MB/s
    六一新玩具
    some interesting words
    优秀资源链接
    Windows故障解决
  • 原文地址:https://www.cnblogs.com/Cindys/p/2844399.html
Copyright © 2011-2022 走看看