第二十五讲 ASP.NET中的XML
*摘要
。XML概述
。XML和DataSet
。XML的读写
。XML文件操作
。XML文件验证
。案例
*XML概述
1.1什么是XML(eXtensible Markup Language)?
-XML是标记语言
-XML是可扩展的(eXtensible)标记语言。
XML并非象HTML那样,提供了一组事先已经定义好了的标记,而是提供了一个标准,利用这个标准,可以根据实际需要定义自己的新的标记语言,并为这个标记语言规定它特有的一套标记。准确地说,XML是一种元标记语言,它允许程序开发人员根据它所提供的规则,制定各种各样的标记语言。
1.2从HTML说起
。HTML是专门为描述主页的表现形式而设计的,它疏于对信息语义及其内部结构的描述,不能适应日益增多的信息检索要求和存档要求。
。HTML对表现形式的描述能力实际上也还是非常不够的,它无法描述矢量图形,科技符号和一些其他的特殊显示效果。
。HTML的标记集日益臃肿,而其松散的语法要求使得文档结构混乱而缺乏条理,导致浏览器的设计越来越复杂,降低了浏览的时间效率与空间效率。
1.3XML的优点
。良好的可扩展性
。内容与形式的分离
。遵循严格的语法要求
。便于不同系统之间信息的传输
。具有较好的保值性
1.7 XML语法
。“格式良好的”XML文档
。XML文档的逻辑结构
。XML文档的物理结构
*“格式良好的”XML文档
。在XML中,“格式良好的”有着明确的标准,即是要遵守XML1.0规范的语法规则。无论是从物理结构上讲,还是从逻辑结构上讲,XML文档都必须符合规范,才能被正确解译处理。
-文档包含一个或多个元素
-文档中只存在一个称为根的元素,或文档元素,该元素无任何部分出现在其他元素中
-元素必须正确关闭
-元素不得交叉
-属性值必须加引号
*逻辑结构之一 XML声明
<?xml version="1.0" encoding="GB2312" standalone="no"?>
。一个XML文档最好以一个XML声明作为开始,它的作用就是告诉XML处理程序:“下面这个文档是按照XML文档的标准对数据进行标记的”。
-version属性:指明所采用的XML版本号
-standalone属性:这个属性表明该XML文档是否和一个外部的文档类型定义DTD配套使用
-encoding属性:指明XML数据所采用的编码标准
*逻辑结构之二 元素
<标记 属性名="属性取值"...>数据内容</标记>
。标记必不可少:XML文档至少要有一个元素
。大小写有别:<HELLO>和<hello>截然不同
。要有正确的结束标记:严格要求标记配对
-结束标记要和起始标记在拼写和大小写上完全相同
-必须在结束标记前面加上一个斜杠"/",如<hello>...</hello>
-当一对标记之间没有任何文本内容时,可以使用“空标记”,如<hr/>
。标记要正确嵌套:<a><b></a></b>是错误的
。有效使用属性:属性以名称/取值对出现,名称与取值之间用等"="分隔,属性名不能重复,且取值用引号引起来
。标记命名要合法:符命名规范
*逻辑结构之三 CDATA节
。在标记CDATA下,所有的标记,实体引用都被忽略,一律当作字符数据看待。
-CDATA的文本内容中不能出现字符串"]]>"
-CDATA不能嵌套
<![CDATA[文本内容]]>
<![CDATA[
<联系人>
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>
</联系人>
]]>
*逻辑结构之四——注释
。注释是用"<!--"和"-->"引起来的,注释文本永远不是真正的XML数据
。在注释文本中不能出现"-"或字符串"--",XML处理器可能把它们和注释结尾标志"-->"相混淆
。不要把注释文本放在标记之中
<示例<!--一个XML的例子-->>错误
。注释不能被嵌套
<!--一个XML的例子
<!--以上是一个注释-->
--> 错误的
* XML和数据集
DataSet方法
DataSet.ReadXml(string strFileName);
DataSet.WriteXml(string strFileName);
* XML,数据库?
。用XML文件存储数据,可减少额外的服务器的负荷。
。只要使用文本编辑器,而不必使用复杂的数据库工具就可以编辑。
。XML方件很容易备份,容易上传和下载。
。XML还有一个更抽象的优点,即作为层次型的格式比关系型的更好。
。所有的服务器都是支持XML文件的。
* XML文件的读写
。foreach(XmlNode personElement in root.ChildNodes)
。XmlTextWriter的使用
* XML文件的操作
XmlDocument的使用:
。Load
。SelectSingleNode
。CreateElement
。Save
* XML文件的验证
。XML文档验证和XML段落验证是使用XmlValidatingReader类实施的,该类通过实现W3C建议所定义的有效性约束来提供DTD、数据简化XML(XDR)和XML架构定义语言(XSD)架构验证服务。
。XmlValidatingReader类实现XmlReader类,并以只时方式对XML流执行验证。
*用XML传送图片
。XmlDocument类的使用
Byte[] bt=new Byte[size];
String strData;
。把字节组转换为字符串:
-String str=Convert.ToBase64String(bt);
。把字符串转换为字节组
-bt=Convert.FromBase64String(strData);