1.xml基本概念:
<?xml version='1.0' encoding="GB2312"?> //XML文档声明,放在xml文档的第一行
<!-- This file represents a fragment of a book store inventory database --> //xml注释
<bookstore> //根元素,即紧接着文档声明后建立的第一个元素
<book genre="autobiography" publicationdate="1991" ISBN="1-861003-11-0"> //根元素的子元素
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name> //成对出现的标签(tag),表示一个元素(element)
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2"> //每个元素可以有多个属性
<title>The Confidence Man</title> //即genre是book元素的属性
<author> //genre是属性名,novel是属性值
<first-name>Herman</first-name> //first-name元素的内容(content)是Herman
<last-name>Melville</last-name> //元素的内容可以称为数据、值
</author>
<price>11.99</price> //book元素包含了title、author、price三个子元素
</book> //book元素还有genre、publicationdate、ISBN三个属性
</bookstore>
注:
一个元素(element)可以有属性(attribute)和内容(content),也可以没有属性或内容
一个元素可以有子元素,也可以没有子元素
2.xml访问模型
xml文件的访问模型有2种:DOM(文档对象模型) 和流模型。
1)DOM模型:
优点:允许编辑和更新xml文件,可以随机访问文档中的数据,可以使用XPath查询(类似于SQL之于数据库)
缺点:需要一次性加载整个文档到内存中,对于较大的文档,会造成资源浪费
2)流模型:
流模型访问xml文档,使用流的概念,每次迭代xml文档中的一个节点,适于处理较大的文档,消耗内存较少。
缺点:它是只读的,仅向前的,不能在文档中执行向后导航操作。
流模型有2种变体:
"推"模型:即使SAX,是一种事件驱动模型。它每发现一个节点就引发一个事件,程序员必须编写事件的处理程序
不灵活,也很麻烦
"拉"模型:就是在遍历文档时把感兴趣的文档部分从读取器中拉出,不引发事件,效率更高
.net使用的是基于"拉"模型的实现方案
3).net既支持流模型 - XmlTextReader类和XmlTextWriter类等
又支持DOM模型- XmlNode类等