所有实例代码都是以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>

通过上面的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",""),
new XElement("Name", "川"),
new XElement("Password", ""),
new XElement("IsAdmin", ""),
new XElement("DateCreated", DateTime.Now.ToString())
);
XElement newNode2 = new XElement("User",
new XElement("Id", ""),
new XElement("Name", "龙"),
new XElement("Password", ""),
new XElement("IsAdmin", ""),
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();//获取第二个元素
second.Element("Password").Value = ""; //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();
}
}
}

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

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

以对象的方式来访问xml数据表(一)的更多相关文章

  1. 以对象的方式来访问xml数据表(三)

    怎样以对象的方式来访问xml数据表? 在讲如何具体实现(二)中所说的专门用于访问xml文件的动态链接库之前,我们先来看看这个动态链接库具体要实现什么功能. 动态链接库IXmlDB.dll的功能: 1. ...

  2. 以对象的方式来访问xml数据表(二)

    为什么要以对象的方式来访问xml数据表? 还记得,自己是在一次完成师兄布置的任务时接触到了xml,那时候需要用xml来作为数据文件,保存一个简单的图书管理系统的数据.于是就知道了,可以用xml文件来保 ...

  3. Ajax跨域访问XML数据的另一种方式——使用YQL查询语句

    XML数据默认是不能在客户端通过Ajax跨域请求读取的,一般的做法是在服务器上写一个简单的代理程序,将远程XML的数据先读到本地服务器,然后客户端再从本地服务器通过Ajax来请求.由于我们不能对数据源 ...

  4. wcf序列化大对象时报错:读取 XML 数据时,超出最大

    错误为: 访问服务异常:格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出 错: request.InnerException 消息是“反序 ...

  5. 使用Entity Framework通过code first方式创建数据库和数据表

    开发环境 WIN10 Entity Framework6.0  MVC5.0  开发工具 VS2015  SqlServer2012 1.创建上下文Context继承DbContext,并创建其他的业 ...

  6. SpringMVC06以对象的方式获取前台的数据

    ========创建需要的两个实体类================ public class School { private String sName; private String addres ...

  7. 使用JavaScript访问XML数据

    在本篇文章中,我们将讲述如何在IE中使用ActiveX功能来访问并解析XML文档,由此允许网络冲浪者操纵它们.这一网页将传入并运行脚本的初始化.你一定确保order.xml文档与jsxml.html在 ...

  8. hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)

    绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...

  9. Android开发之使用DefaultHandler处理XML数据

    一.定义规则 XML数据结构定义 请记住上面的定义,后面我会用“标签开始”.“文本”.“标签结束”表示SAX正在处理哪部分XML数据 事件模型 为什么这里我要谈到这个,因为SAX处理XML数据是采用事 ...

随机推荐

  1. leveldb - sstable格式

    整体上,sstable文件分为数据区与索引区,尾部的footer指出了meta index block与data index block的偏移与大小,data index block指出了各data ...

  2. Eclipse shortcuts

    Editor Shortcut Description Alt + / Content assist. A great help for our coding. Ctrl + Shift + F Fo ...

  3. win10初体验,我的错误代码哪里去了

    今天闲着,就把WIN7升级安装成WIN10,感觉这次WIN10的升级方案确实还可以人,可以保留文件和配置升级. 升级完,试了一下宽带连接,发现错误代码没了,像下面的应该就691呢~~~

  4. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块

    实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...

  5. FindProcDLL::FindProc 和 KillProcDLL::KillProc,必须使用WPF x86编译出来的程序

    如果是 WPF 编写的exe,想用NSIS打包. 脚本里面要注意了,如果使用了 FindProcDLL::FindProc 和 KillProcDLL::KillProc, 那么WPF 的编译选项必须 ...

  6. mysql主从复制原理

    复制如何工作 整体上来说,复制有3个步骤: (1)    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events):       ...

  7. QImage 图像格式小结

    原地址:http://tracey2076.blog.51cto.com/1623739/539690 嗯,这个QImage的问题研究好久了,有段时间没用,忘了,已经被两次问到了,突然有点解释不清楚, ...

  8. QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

    最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC编写,而且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,所 ...

  9. reinstall_xbt: Linux中如何查看文件的最初创建时间

    Linux中如何查看文件的最初创建时间 与文件相关的几个时间: 1.访问时间,读一次这个文件的内容,这个时间就会更新.比如对这个文件使用more命令.ls.stat命令都不会修改文件的访问时间.   ...

  10. ubuntu 搭建 samba 服务器

    . sudo apt-get install samba samba-common . sudo vi /etc/samba/smb.conf [alair's share] path = /home ...