XML技术和Web服务
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第12章XML技术和Web服务
12.1 XML概述
XML是"eXtensible Markup Language"的缩写,即可扩展标记语言。XML对于语法有着严格的规定,只有当一个XML文档符合语法规定,处理程序才能对它加以分析和处理。每个XML文档都有一个逻辑结构和物理结构。从逻辑上讲,文档由声明(declaration)、元素(element)、注释(comment)、字符引用(character reference)和处理说明(processing instruction)组成。
1、XML声明
XML声明是处理指令的一种,一个XML文档最好以一个XML声明作为开始。下面是一个完整的XML声明:
在一个XML的处理指令中必须包括version属性,指明所采用的XML的版本号,而且它必须在属性列表中排在第一位。standalone属性表明该XML文档是否和一个外部文档类型定义DTD配套使用。encoding属性则指明了数据所采用的编码标准。
2、元素
元素是XML文档内容的基本单元。从语法上讲,一个元素包含一个起始标记、一个结束标记以及标记之间的数据内容。其形式是:
<标记>数据内容标记>
对于标记有以下语法规定:
标记都区分大小写。
要有正确的结束标记。结束标记除了要和起始标记在拼写和大小写上完全相同,还必须在前面加上一个斜杠"/"。当一对标记之间没有任何文本内容
时,可以不写结束标记,而在起始标记的最后冠以斜杠"/"来确认。这样的
标记称为"空标记"。
XML标记都必须合理嵌套。
标记命名要合法。标记名应该以字母、下划线"_"或冒号":"开头,后面跟字母、数字、句号". "、冒号、下划线或连字符"-",但是中间不能有空格,而
且任何标记名不能以"XML"(或者"XML"大小写的任何组合,如"XML"、
"XML"、"XML"等等)起始。
有效使用属性。标记中可以包含任意多个属性,属性以名称/取值对出现,属性名不能重复,名称与取值之间用等号"="分隔,且取值用引号引起来。
3、CDATA节
在标记CDA TA下,所有的标记、实体引用都被忽略,而被XML处理程序一视同仁地当作字符数据看待。CDA TA的形式如下:
<![CDATA[ 文本内容]] >
CDA TA的文本内容中不能出现字符串"]]>",另外,CDA TA不能嵌套,
0第12章 XML技术和Web服务
2 4、注释
注释是在XML文档中加入一些用作解释的字符数据,XML处理器不对它们进行任
何处理。在XML中,注释的方法与HTML完全相同,用"<!--"和"-->"将注释文本引起来。对于注释还有以下规定:
❑注释不能出现在XML声明之前;
❑注释不能出现在标记中;
❑注释中不能出现连续两个连字符,即"--" 如:;
❑注释中可包含元素,但元素中不能包含"--"包含的元素解析时被忽略;
❑注释不能嵌套;
5、处理指令
处理指令是用来给处理XML文档的应用程序提供信息的,XML分析器把信息原封不动地传给应用程序,由应用程序来解释这个指令,并遵照它所提供的信息进行处理。处理指令应该遵循下面的格式:
<?处理指令名处理指令信息>
XML文档使用的是自描述的和简单的语法,一个XML文档最基本的构成包括:声明,处理指令(可选)和元素。
12.2 XML常用对象
XML所有对象都在System.Xml命名空间中,并且这些对象是以XmlDocument对象为核心组织起来的。下面来讲解一下XML常用对象。
1、XmlNode对象
XmlNode对象表示XML 文档中的单个节点。该对象常用属性及方法意义如下:
✧Name属性:获取节点的限定名。
✧V alue属性:获取或设置节点的值。
✧BaseURI属性:获取当前节点的基URI。
✧ChildNodes属性:获取节点的所有子节点。
✧FirstChild属性:获取节点的第一个子级。
✧HasChildNodes属性:获取一个值,该值指示节点是否有任何子节点。
✧LastChild属性:获取节点的最后一个子级。
✧NamespaceURI属性:获取该节点的命名空间URI。
✧WriteTo方法:将当前节点保存到指定的XmlWriter对象中。
✧SelectSingleNode方法:选择匹配XPath 表达式的第一个XmlNode。
✧SelectNodes方法:选择匹配XPath 表达式的节点列表。
✧RemoveChild方法:移除指定的子节点。
✧RemoveAll方法:移除当前节点的所有子节点和/或属性。
✧PrependChild方法:将指定的节点添加到该节点的子节点列表的开头。
✧InsertBefore方法:将指定的节点紧接着插入指定的引用节点之前。
峰杰工作室
✧InsertAfter方法:将指定的节点紧接着插入指定的引用节点之后。
✧AppendChild方法:将指定的节点添加到该节点的子节点列表的末尾。
✧Clone方法:创建当前节点的一个副本。
2、XmlDocument对象
XmlDocument对象用来描述XML文件对象。在进行实例化时,可以由XmlReader 对象打开一个现有的XML文件,也可以根据自身的构造函数创建一个XML文件对象。当XmlDocument对象被创建或赋值时,将在内存中生成一个描述XML文件对象,这样就可以在这个对象范围内,对指定的XML文件执行导航和写入的操作。该对象常用属性及方法意义如下:
✧Name属性:获取节点的限定名。
✧NodeType属性:获取当前节点的类型。
✧ParentNode属性:获取该节点(对于可以具有父级的节点)的父级。
✧LocalName属性:获取节点的本地名称。
✧InnerXml属性:获取或设置表示当前节点子级的标记。
✧DocumentType属性:获取包含DOCTYPE 声明的节点。
✧DocumentElement属性:获取文档的根System.Xml.XmlElement。
✧SchemaInfo属性:返回节点的后架构验证信息集(PSVI)。
✧ImportNode方法:将节点从另一个文档导入到当前文档。
✧Load方法:从指定的URL 加载XML 文档。
✧LoadXml方法:从指定的字符串加载XML 文档。
✧ReadNode方法:根据System.Xml.XmlReader 中的信息创建一个
System.Xml.XmlNode 对象。读取器必须定位在节点或属性上。
✧Save方法:将XML 文档保存到指定的文件。
✧CreateElement方法:创建具有指定名称的元素。
3、XmlReader对象
XmlReader对象就是XML数据读取器,即对XML数据进行快速、非缓存、只进访问。该对象常用属性及方法意义如下:
✧V alue属性:获取当前节点的文本值。
✧ReadState属性:获取读取器的状态。
✧NodeType属性:获取当前节点的类型。
✧Name属性:获取当前节点的限定名。
✧LocalName属性:获取当前节点的本地名称。
✧EOF属性:获取一个值,该值指示此读取器是否定位在流的结尾。
✧IsEmptyElement属性:获取一个值,该值指示当前节点是否为空元素。
✧Depth属性:获取XML 文档中当前节点的深度。
✧Skip方法:跳过当前节点的子级。
✧Read方法:从流中读取下一个节点。
✧MoveToElement方法:移动到包含当前属性节点的元素。
✧Create方法:使用指定的流创建一个新的XmlReader 实例。
3