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
    }

 

 

转载于:https://www.cnblogs.com/Cindys/archive/2013/01/04/2844399.html

内容概要:本文档为《400_IB Specification Vol 2-Release-2.0-Final-2025-07-31.pdf》,主要描述了InfiniBand架构2.0版本的物理层规范。文档详细规定了链路初始化、配置与训练流程,包括但不限于传输序列(TS1、TS2、TS3)、链路去偏斜、波特率、前向纠错(FEC)支持、链路速度协商及扩展速度选项等。此外,还介绍了链路状态机的不同状态(如禁用、轮询、配置等),以及各状态下应遵循的规则和命令。针对不同数据速率(从SDR到XDR)的链路格式化规则也有详细说明,确保数据包格式和控制符号在多条物理通道上的一致性和正确性。文档还涵盖了链路性能监控和错误检测机制。 适用人群:适用于从事网络硬件设计、开发及维护的技术人员,尤其是那些需要深入了解InfiniBand物理层细节的专业人士。 使用场景及目标:① 设计和实现支持多种数据速率和编码方式的InfiniBand设备;② 开发链路初始化和训练算法,确保链路两端设备能够正确配置并优化通信质量;③ 实现链路性能监控和错误检测,提高系统的可靠性和稳定性。 其他说明:本文档属于InfiniBand贸易协会所有,为专有信息,仅供内部参考和技术交流使用。文档内容详尽,对于理解和实施InfiniBand接口具有重要指导意义。读者应结合相关背景资料进行学习,以确保正确理解和应用规范中的各项技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值