zoukankan      html  css  js  c++  java
  • 以对象的方式来访问xml数据表(一)

      所有实例代码都是以C#演示——

      在将如何以对象的方式来访问xml数据表之前,我们先来谈谈如何用xml文件作为数据库吧!

      平时在开发一些小的应用的时候,需要一个数据库,这个时候虽然可以用SQL server、MySql等第三方数据库,但个人感觉这有点大材小用、而且配置链接起来还很麻烦,这个时候就可以考虑使用xml文件作为数据库,小巧、方便打包。

          先简单的举一个例子:用一个xml文件来保存用户信息(用户可以有多个)

    <?xml version="1.0" encoding="utf-8"?>
    <Users>
      <User>
        <Id>1</Id>
        <Name>forcheng</Name>
        <Password>123456</Password>
        <IsAdmin>1</IsAdmin>
        <DateCreated>2016/03/22 16:08:00</DateCreated>
      </User>
      <User>
        <Id>2</Id>
        <Name>cheng</Name>
        <Password>123456789</Password>
        <IsAdmin>0</IsAdmin>
        <DateCreated>2016/03/24 12:08:30</DateCreated>
      </User>
    </Users>
    View Code

         通过上面的xml代码,我们知道了数据是如何保存在xml文件里面的。(在这里,你可以简单将一个xml文件看做一张数据表,每一个<user>...</user>元素看做是一条记录)

       下面的实例简单地展示一下如何对xml文件中的数据进行增、删、查、改操作:

    using System;
    using System.IO;
    using System.Xml.Linq;
    using System.Linq;
    
    namespace ConsoleApplication
    {
    
        class Program
        {
            //主函数
            static void Main(string[] args)
            {
                //如果不存在文件,则先创建
                if(!File.Exists("db.xml"))
                {
                    var xmlFile = new StreamWriter("db.xml");
                    xmlFile.WriteLine("<?xml version="1.0" encoding="utf-8"?>");
                    xmlFile.WriteLine("<Users>");
                    xmlFile.WriteLine("</Users>");
                    xmlFile.Close();
                }
    
                XElement xmlDoc = XElement.Load("db.xml");//载入db.xml文件,db.xml与可执行程序位于同一目录
    
                Console.WriteLine(xmlDoc.ToString());//输出显示数据
                Console.WriteLine();
                Console.ReadKey();
    
                ///给db.xml添加数据///
    
                //创建两条记录
                XElement newNode1 = new XElement("User",
                        new XElement("Id","3"),
                        new XElement("Name", ""),
                        new XElement("Password", "1234567"),
                        new XElement("IsAdmin", "1"),
                        new XElement("DateCreated", DateTime.Now.ToString())
                    );
                XElement newNode2 = new XElement("User",
                        new XElement("Id", "4"),
                        new XElement("Name", ""),
                        new XElement("Password", "12345678"),
                        new XElement("IsAdmin", "0"),
                        new XElement("DateCreated", DateTime.Now.ToString())
                    );
                xmlDoc.Add(newNode1);//添加记录newNode1
                xmlDoc.Add(newNode2);//添加记录newNode2,此时数据并未直接保存在db.xml文件里面而是保存在缓存或其他地方,想要将修改后的数据保存,需调用 Save() 方法
    
                //xmlDoc.Save("db.xml");保存修改到文件
                Console.WriteLine(xmlDoc.ToString());//输出显示数据
                Console.WriteLine();
                Console.ReadKey();
    
                ///修改db.xml里面的数据///
    
                var allUses = xmlDoc.Elements("User") ;//返回所有用户数据(引用)
    
                var first = allUses.First();//获取第一个元素 等价于allUses.ElementAt(0)
                first.Element("Name").Value = "小明";
    
                var second = allUses.ElementAt(1);//获取第二个元素
                second.Element("Password").Value = "123";
    
                //xmlDoc.Save("db.xml");保存修改到文件
                Console.WriteLine(xmlDoc.ToString());//输出显示数据
                Console.WriteLine();
                Console.ReadKey();
    
                ///遍历db.xml里面的数据///
                ///
                foreach (var item in xmlDoc.Elements("User"))
                {
                    Console.WriteLine(item.Element("Id").Value);
                    Console.WriteLine(item.Element("Name").Value);
                    Console.WriteLine(item.Element("Password").Value);
                    Console.WriteLine(item.Element("IsAdmin").Value);
                    Console.WriteLine(item.Element("DateCreated").Value);
                }
                Console.WriteLine();
    
                ///删除db.xml里面的数据///
    
                newNode1.Remove();//移除数据  等价于 first.Remove();  因为它们都是实例的引用
                newNode2.Remove();//移除数据  等价于 second.Remove();
                                  //上面两句也等价于 xmlDoc.RemoveAll(); 移除所有子节点和属性
    
                //xmlDoc.Save("db.xml");保存修改到文件
                Console.WriteLine(xmlDoc.ToString());//输出显示数据
                Console.ReadKey();
            }
        }
    }
    View Code

         看了上面的源代码的读者可能发现,源代码中并没有涉及以对象的方式来访问xml数据表,不用急。写上面的源代码主要目的有两个:(一)、展示一下对xml文件中的数据进行增、删、查、改等基本操作,让读者有一个大概了解。(二)、为了引出以对象的方式来访问xml数据表的方便和后期维护的高效性,大家看了上面的对xml元素的访问方式之后,是否觉得每次都要通过Element(value)去访问元素的值很不方便?。(可能没有用过xml文件作为数据库开发的并不会认为这有什么不方便之处)。

      那么我将在(二)、(三)中详细谈到为什么要用以对象的方式来访问xml数据表和怎样以对象的方式来访问xml数据表。

  • 相关阅读:
    WCF 第八章 安全 确定替代身份(中)使用AzMan认证
    WCF 第八章 安全 总结
    WCF 第八章 安全 因特网上的安全服务(下) 其他认证模式
    WCF Membership Provider
    WCF 第八章 安全 确定替代身份(下)模仿用户
    WCF 第八章 安全 因特网上的安全服务(上)
    WCF 第九章 诊断
    HTTPS的七个误解(转载)
    WCF 第八章 安全 日志和审计
    基于比较的排序算法集
  • 原文地址:https://www.cnblogs.com/forcheng/p/5309520.html
Copyright © 2011-2022 走看看