1,xml

在存储本地文件时,一般选择存储格式为xml,而不是txt。xml是轻量级的数据储存文件。

(1)优点:

①xml文档内容和结构完全分离。

分离了实现内容(其他部门关注)和流程定义(系统架构师关注)。

②互操作性强

即纯文本文件的特点。可以方便地穿越防火墙,在不同操作系统之间通信。

③规范统一(跨平台)

各平台使用统一的格式和语法。

(2)场景:

①数据交换

数据传输中,xml保留了诸如父/子关系这样的数据结构。几个应用程序可以共享和解析同一个XML文件,不必使用传统的字符串解析或拆解过程。

然,这方面json使用更多一点。了解:Json框架

②内容管理

XML具有的能够运行于不同系统平台之间和转换成不同格式目标文件的能力。

2,C#demo实现

1)存储xml

            //创建XmlDocument对象xmlDoc  
            XmlDocument xmlDoc = new XmlDocument();
            //创建并添加ColumnsSort结点  
            XmlElement ColumnsSort = xmlDoc.CreateElement("ColumnsSort");
            xmlDoc.AppendChild(ColumnsSort);
            //创建并添加Columns元素  dgvFlight为DataGridView控件
            for (int i = 0; i < dgvFlight.Columns.Count; i++)
            {
                XmlElement columns = xmlDoc.CreateElement("Columns");
                columns.InnerText = dgvFlight.Columns[i].Name;
                //设置xml属性
                columns.SetAttribute("displayIndex", dgvFlight.Columns[i].DisplayIndex.ToString());
                ColumnsSort.AppendChild(columns);
            }
            if (!Directory.Exists(@"../Release/File"))//若文件夹不存在则新建文件夹   
            {
                Directory.CreateDirectory(@"../Release/File"); //新建文件夹   
            }

            //通过Save()方法保存数据到XML文件UserList.XML中  @"../Release/file/ColumnsSort.xml"
            xmlDoc.Save(@"../Release/File/Config.xml");   // 保存文件

2)读取xml

        /// <summary>
        /// 从xml中读取列排序 ,并设置界面列顺序
        /// </summary>
        private void SetColumnsSort()
        {
            XmlDocument doc = new XmlDocument();
            string fileName = @"../Release/File/Config.xml";
            //判断文件是否存在
            if (!System.IO.File.Exists(fileName))
            {
                return;
            }
            doc.Load(fileName);    //加载Xml文件  
            XmlElement rootElem = doc.DocumentElement;   //获取根节点  
            XmlNodeList verNodes = rootElem.GetElementsByTagName("Columns"); //获取Columns子节点集合 

            int count = verNodes.Count;

            //重新加载界面列表顺序
            while (count > 0)
            {
                count--;
                dgvFlight.Columns[verNodes[count].InnerText].DisplayIndex = int.Parse(verNodes[count].Attributes["displayIndex"].Value);
            }

3)xml一览:config.xml

<ColumnsSort>
  <Columns displayIndex="1">A</Columns>
  <Columns displayIndex="0">B</Columns>
  <Columns displayIndex="2">C</Columns>
</ColumnsSort>
Logo

开源、云原生的融合云平台

更多推荐