【C#学习】xml文件的存储与读取

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>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过使用XML文件注入来实现无属性对象,具体步骤如下: 1. 创建一个XML文件,用于存储对象的数据。 2. 创建一个类,用于表示对象,并在类中定义需要存储的数据成员。 3. 创建一个注入器类(Injector),用于将XML文件中的数据注入到对象中。 4. 在注入器类中,使用XML解析器来读取XML文件中的数据,并将数据注入到对象中。 5. 在主程序中,创建对象并调用注入器类的方法,将XML文件中的数据注入到对象中。 例如,以下是一个无属性对象的示例代码: ```csharp using System; using System.Xml; namespace XMLInjection { // 创建一个无属性对象 class Person { public string name; public int age; } // 创建注入器类 class Injector { // 将XML文件中的数据注入到对象中 public static void Inject(Person person, string filename) { // 创建XML解析器 XmlDocument doc = new XmlDocument(); doc.Load(filename); // 获取根节点 XmlNode root = doc.SelectSingleNode("person"); // 读取数据并注入到对象中 XmlNode nameNode = root.SelectSingleNode("name"); person.name = nameNode.InnerText; XmlNode ageNode = root.SelectSingleNode("age"); person.age = Convert.ToInt32(ageNode.InnerText); } } // 主程序 class Program { static void Main(string[] args) { // 创建对象 Person person = new Person(); // 将XML文件中的数据注入到对象中 Injector.Inject(person, "person.xml"); // 输出对象的数据 Console.WriteLine("Name: " + person.name); Console.WriteLine("Age: " + person.age); } } } ``` 在以上示例代码中,我们创建了一个名为“Person”的类,用于表示无属性对象。然后,我们创建了一个名为“Injector”的注入器类,用于将XML文件中的数据注入到对象中。在主程序中,我们创建了一个名为“person”的对象,并调用注入器类的方法,将XML文件中的数据注入到对象中。最后,我们输出对象的数据,确认注入成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值