XML的简单使用

1、XML是什么?
  xml和json一样,都是数据语言,以简单的文本格式存储数据,可以被人类和几乎任何计算机读取。说到底,就是一个文本格式,就像html能被浏览器识别一样。

2、XML的功能及使用场景
  上面说了xml以简单的文本格式存储数据,我们可以使用代码对xml文件进行增删改查。那它的功能和谁相似呢?没错,就是数据库。区别是什么呢,数据库不通用、复杂、慢,但是功能强;xml通用、简单、快、功能稍弱。功能的强和弱以什么区分呢,存储能力。xml不适合存储大批量的数据,一个10多g的数据表好处理,一个10多g的文本文件估计打开就得费不少时间。
  根据xml的功能,我们可以知道xml只适合存储少量的数据。如果是这样的话,愚以为xml的增删改的用处就不太多了,所以这里我们只学习xml的编写和查询。那它在我这的使用场景是啥呢,就是存一些固定的、轻易不会更改的数据。比如:网站的配置、国内的省市县的地区信息、各大银行的名称与编码啥的。

3、XML基础知识
  xml由两部分组成,一个是声明,一般为<?xml version="1.0" encoding="utf-8" ?>;另一个是xml数据,以一个根节点为开端,在根节点内部编写数据。xml有且只有一个根节点。根节点中设置子节点,每个节点由一对闭合标签和标签中的数据组成。节点也可以设置属性(也可以叫特性),可以根据属性值来寻找对应的节点,下面例子中的key就是一个属性。举个栗子:

<?xml version="1.0" encoding="utf-8" ?>
<banks>
	<bank key="独一">
		<name>中国建设银行</name>
		<code>1001</code>
	</bank>
	<bank key="无二">
		<name>中国工商银行</name>
		<code>1002</code>
	</bank>
</banks>

4、XML模式
  XML模式,也可以叫XML架构(书里面叫模式,vs里面叫架构)。可以简单理解成一个xml的模板,当我们创建一个xml文件并引用该模板后,你就得按照模板的要求编写xml文件,目的呢就是为了不让你瞎写,避免出现预期之外的数据,也可以理解成是一种验证吧。
  怎么用呢,首先我们创建一个xml文件,在vs中当前打开的如果是xml文件的话,vs会出现xml菜单,点击菜单中的创建架构,这个事就算成了。vs会根据默认的路径创建一个后缀名为xsd的文件,这个文件便是我们创建的架构。我们下次编写xml文件的时候便可以在xml菜单/架构中引用该架构了。多提一嘴,这个架构不保存在项目中,而是vs的文件夹中,想要团队使用的话估计还得费点功夫。

5、XmlDocument类
  处理xml文件,首先应该读取它,并且将该文件转化为一个可操作的对象,这个对象就是XmlDocument类。
  我们如何才能读取这个类呢?第一步,创建一个xml文件并将该文件存放至web项目中,设置其属性为复制到输出项目中。第二步先看代码,HttpContext.Current.Server.MapPath的用处是返回物理路径,方法中的参数是文件相对于站点根目录的路径,新建XmlDocument类并加载该文件,这个XmlDocument类就包含了对应xml文件中的所有数据了。

XmlDocument document = new XmlDocument();
document.Load(HttpContext.Current.Server.MapPath(@"\Config\BankData.xml"));

6、XmlElement类
  上面实例化后的XmlDocument类有一个DocumentElement属性,这个属性就是XmlElement类,这个类里面包含了文档中的所有信息。那么如何把这些信息实例化成对象列表呢?看代码吧

var list = new List<BankModel>();
XmlDocument document = new XmlDocument();
document.Load(HttpContext.Current.Server.MapPath(@"\Config\BankData.xml"));
XmlElement element = document.DocumentElement;
XmlNodeList xmlList = element.ChildNodes;
foreach (XmlElement nodeList in xmlList) 
{
    var name = nodeList.SelectNodes("name")[0].InnerText;
    var code = Convert.ToInt32(nodeList.SelectNodes("code")[0].InnerText);
    list.Add(new BankModel() { BankName=name,BankId=code});
}
return list;

写的比较简单,后面遇到复杂点的再更新吧

posted @ 2020-07-05 00:11  梁仕博  阅读(688)  评论(0编辑  收藏  举报