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
        }
  • 相关阅读:
    C#中调用DTS
    经典问题:向setTimeout传递函数参数
    C#.NET 中的类型转换
    SQL语句导入导出大全 (转载)
    js脚本defer的作用
    [转]使用 Java API 处理 WebSphere MQ 大消息
    WideCharToMultiByte 宽字节转换为多字节
    [原].NET数据库开发中请注意区域时间格式
    输出页眉和页脚的简单HTTP模块实践
    浅析ASP.NET HTTP Module
  • 原文地址:https://www.cnblogs.com/Cindys/p/2844399.html
Copyright © 2011-2022 走看看