XML技术和Web服务

XML技术和Web服务
XML技术和Web服务

第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

0第12章 XML技术和Web服务

4 ?Dispose方法:释放由XmlReader 占用的非托管资源,还可以另外再释放托管

资源。

4、XmlWriter对象

XmlWriter对象表示一个编写器,该编写器提供一种快速、非缓存和只进的方式来生成包含XML 数据的流或文件。该对象常用属性及方法意义如下:

?XmlLang属性:获取当前的xml:lang 范围。

?XmlSpace属性:获取表示当前xml:space 范围的System.Xml.XmlSpace。

?WriteState属性:获取编写器的状态。

?Create方法:使用指定的文件名创建一个新的XmlWriter 实例。

?Flush方法:将缓冲区中的所有内容刷新到基础流,并同时刷新基础流。

?WriteAttributeString方法:写出具有指定的前缀、本地名称、命名空间URI 和

值的属性。

?WriteElementString方法:写出具有指定的本地名称和值的元素。

?WriteEndDocument方法:关闭任何打开的元素或属性并将编写器重新设置为

Start 状态。

?WriteEndElement方法:关闭一个元素并弹出相应的命名空间范围。

?WriteName方法:当在派生类中被重写时,写出指定的名称,确保它是符合

W3C XML 1.0的有效名称。

?WriteNode方法:将所有内容从读取器复制到编写器并将读取器移动到下一个

同级的开始位置。

?WriteString方法:编写给定的文本内容。

?Close方法:关闭此流和基础流。

5、XmlElement对象

XmlElement对象用于管理XML数据中的元素节点,该对象常用属性及方法意义如下:

?Attributes属性:获取包含该节点属性列表的XmlAttributeCollection。

?HasAttributes属性:获取一个布尔值,该值指示当前节点是否有任何属性。

?InnerText属性:获取或设置节点及其所有子级的串联值。

?InnerXml属性:获取或设置只表示此节点子级的标记。

?IsEmpty属性:获取或设置元素的标记格式。

?LocalName属性:获取当前节点的本地名称。

?Name属性:获取节点的限定名。

?NamespaceURI属性:获取该节点的命名空间URI。

?NodeType属性:获取当前节点的类型。

?Prefix属性:获取或设置该节点的命名空间前缀。

?SchemaInfo属性:获取作为架构验证的结果分配给此节点的架构验证后信息

集。

?RemoveChild方法:删除指定的子节点。

?RemoveAll方法:删除当前节点的所有指定属性和子级。不移除默认属性。

峰杰工作室

?CloneNode方法:创建此节点的一个副本。

?GetAttribute方法:返回具有指定名称的属性的值。

?GetAttributeNode方法:返回具有指定本地名称和命名空间URI 的

System.Xml.XmlAttribute。

?WriteContentTo方法:将节点的所有子级保存到指定的XmlWriter 中。

?WriteTo方法:将当前节点保存到指定的XmlWriter 中。

?SetAttributeNode方法:添加指定的System.Xml.XmlAttribute。

?SelectNodes方法:选择匹配Xpath表达式的节点列表

?SelectSingleNode方法:选择匹配Xpath表达式的第一个XmlNode。

6、XmlDataDocument对象

XmlDataDocument对象表示DataSet对象的XML文件对象。通过将一个XmlDataDocument对象实例绑定到DataSet对象,并对DataSet对象中的数据进行存储和检索。该对象常用方法意义如下:

?Load方法:使用指定的URL 加载XmlDataDocument对象。

?CreateElement方法:创建具有指定XmlNode.Prefix、XmlDocument.LocalName

和https://www.360docs.net/doc/d88910891.html,spaceURI 的元素。

?CreateNavigator方法:创建一个用于导航此文档的新XPathNavigator 对象。

XPathNavigator 定位在node 参数中指定的节点上。

还可以利用DataSet数据集的ReadXML方法动态读取XML文件中的数据,利用WriteXml方法动态生成XML文件。

DataSet数据集的ReadXML方法语法结构如下:

Public XmlReadMode ReadXml ( string filename )

Filename参数表示读取源的文件名。

DataSet数据集的WriteXML方法语法结构如下:

public void WriteXml(string fileName)

Filename参数表示要向其写入的文件的名称(包括路径)。

DataSet数据集操纵XML文件的其他常用方法及意义如下:

?GetXml方法:可以返回存储在DataSet中的数据的XML表示形式。

?GetXmlSchema方法:可以返回存储在DataSet中的数据的XML表示形式的

XML架构。

?InferXmlShchema方法:将指定System.Xml.XmlReader 中的XML 架构应用

于System.Data.DataSet。

?ReadXmlSchema方法:从指定的文件中将XML 架构读入DataSet。

?WriteXmlSchema方法:将XML 架构形式的DataSet 结构写入文件。

实例动态增加并显示XML数据

1)单击菜单栏中的“文件/新建/网站”命令(快捷键:Ctrl+Alt+N),弹出“新建网站”对话框,设置模板为“https://www.360docs.net/doc/d88910891.html,网站”,然后设置网站的位置及语言,单击

5

0 第12章 XML 技术和Web 服务

6 “确定”按钮,就可以新建网站。

2

修改当前网页标题为“动态增加

XML 数据”,具体代码如下:

3) 利用表格布局页面。单击工具箱中的

控件,在Web 界面中单击添加该控

件,然后设置“Align ”属性为“center ”,“Style ”属性为“width: 350px;”,如图12-1所示。

图12-1

添加表格控件

4) 单击“源”选项卡,就可以看到Web 界面设计代码,然后设置网页标题信息为“动

态增加XML

数据”,然后设置表格为7行2列,并合并部分单元格,最后输入说明性文字并美化,单击“设计”选项卡,效果如图12-2所示。

图12-2 利用表格布局页面

5) 添加文本框控件。单击工具箱中的控件,然后在表格中添加5个该控

件,并设置其“Text ”属性为空,最后调整其大小及位置后效果如图12-3所示。

图12-3 添加文本框控件

6) 添加按钮控件。单击工具箱中的控件,然后在表格中添加3个该控件,并

设置他们的“Text ”属性分别为“添加”、“重填”和“浏览”,最后调整其大小及位置后效果如图12-4所示。

峰杰工作室

7

图12-4 添加按钮控件

7) 添加XML 文件。单击菜单栏中的“网站/添加新项”命令(快捷键:

Ctrl+Shift+A ),打开“添加新项”对话框,选择“XML 文件”项,如图12-5所示。

图12-5 添加新项对话框

8) 设置好参数后,单击“添加”按钮,就把XML 文件添加到应用程序中,然后输入

如下代码:

9) 添加Web 窗体。单击菜单栏中的“网站/添加新项”命令,弹出“添加新项”对话

0 第12章 XML 技术和Web 服务

8 框,选择“Web 窗体”项,设置名称为“Myshow.aspx ”,如图12-6所示。

图12-6 添加新项对话框

10) 单击“添加”按钮,就把Web 窗体添加到应用程序中。

11) 在该页面中添加表格及说明文字,美化后效果如图12-7所示。

图12-7 利用表格布局页面并美化

12)

添加数据绑定显示控件。单击工具箱中的控件,然后在表格中添加

该控件,然后利用自动套用格式进行美化,再调整其大小及位置后效果如图12-8所示。

图12-8 添加数据绑定显示控件

13) 添加代码。双击Default.aspx 设计页面,进入代码视图。为了调用XmlDocument

对象和XmlNode 对象,要导入System.Xml 命名空间,具体代码如下:

14) 双击“添加”按钮,添加该按钮的单击事件代码,实现动态向XML 文件中添加

数据功能,具体代码如下:

峰杰工作室

9

15) 双击“重填”按钮,添加该按钮的单击事件代码,实现清空所有填写数据信息功

能,具体代码如下:

16) 双击“浏览”按钮,添加该按钮的单击事件代码,实现动态查看插入后的XML

数据信息功能,具体代码如下:

17)

双击Myshow.aspx 设计页面,添加该页面的加载事件代码,具体如下:

18) 运行程序。单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱

0第12章 XML技术和Web服务

10 中的按钮,运行程序,然后在对应的文本框中输入要添加XML数据信息,如图12-9所示。

图12-9 动态增加XML数据

19)在各文本框中输入相应的数据信息,如果输入错误,可以单击“重填”按钮,清空所有文本框,然后重新输入。

20)如果输入的数据信息格式都正确,然后单击“添加”按钮,就会弹出提示对话框,如图12-10所示。

图12-10 提示对话框

21)单击提示对话框中的“确定”按钮,再单击“浏览”按钮,就可以看到插入的XML数据信息,如图12-11所示。

图12-11 插入的XML数据信息

12.3 Web服务

Web服务是一种新的Web应用程序的分支,是构建应用程序的普通模型,能在所有支持Internet网络通讯的操作系统上实施。Web服务主要利用Http和Soap协议使用商业数据在Web上传输。Web服务实际上是基于XML的针对商业应用程序的系统服

峰杰工作室

11

务,可在单个应用程序中使用,也可在国际互联网中被许多应用程序使用。因为一个Web 服务可通过一个标准接口访问,所以它允许多个不同的系统协同合作进行单一的网络计算。

12.3.1 创建并测试Web 服务

在Visual Studio 2008中,创建Web 服务是非常简单的,因为是通过ASP .NET Web 服务模板来实现的,具体操作如下:

1) 单击菜单栏中的“文件/新建/网站”命令(快捷键:Ctrl+Alt+N ),弹出“新建网站”

对话框,设置模板为“ASP .NET Web 服务”,然后设置网站的位置及语言,如图12-12所示。

图12-12 新建网站对话框

2) 设置好后,单击“确定”按钮,就可以新建一个Web 服务,并自动生成了一个

HelloWorld 服务范例,如图12-13所示。

图12-13 新建Web 服务

3) 注意,方法前面的[WebMethod]表示这个方法可以由Web 调用。

4)

下面在代码中添加自己定义的方法Sum(),实现两个数的相加,具体代码如下:

0 第12章 XML 技术和Web 服务

12

5) 测试Web 服务。单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱中的按钮,运行程序,就可以看到公用HelloWorld 服务和自定义的Sum 服务,如图12-14所示。

图12-14 运行Web 服务

6) 单击Sum 服务,就进行自定义Web 服务测试页面,如图12-15所示。

图12-15 自定义Web 服务测试页面

7) 在这里输入参数a 和b 的值,然后单击“调用”按钮,就可以看到测试Web 服务结

峰杰工作室

13

果,如图12-16所示。

图12-16 测试Web 服务结果

8) 从测试结果可以看出,Web 服务的方法的返回结果是使用XML 进行编码的。 12.3.2 Windows 应用程序引用Web 服务

首先创建Windows 应用程序,然后通过“Web 引用”与服务器相连,从而使Windows 客户端应用程序可以调用服务器端程序,从而实现数值的运算。具体方法如下

1) 单击菜单栏中的“文件/新建/项目”(快捷键:Ctrl+Shift+N ),打开“新建项目”对

话框,项目类型选择“Visual C#”,模板选择“Windows 窗体应用程序”项.,名称为“Ex12_1”。

2) 设置好各参数后,单击“确定”按钮,就可以创建Windows 窗体应用程序,然后设

置“Text ”属性为“Windows 应用程序引用Web 服务”,如图12-17所示。

图12-17 设置窗体属性

3) 在窗体中添加2个框架、3个标签、2个文本框和1个按钮,属性设置后并调整他们

的大小及位置,效果如图12-18所示。

图12-18 添加2个框架、3个标签、2个文本框和1个按钮

4) 添加Web 引用。单击菜单栏中的“添加服务引用”命令,弹出“添加服务引用”对

0第12章 XML技术和Web服务

14 话框,如图12-19所示。

图12-19 添加服务引用对话框

5)单击“高级”按钮,弹出“服务引用设置”对话框,如图12-20所示。

图12-20 服务引用设置对话框

6)单击“添加Web引用”按钮,弹出“添加Web引用”对话框,这样用户可以查找本地计算机上的Web服务,也可以查找本地网络上Web服务,还可以查找UDDI目录上的Web服务,即在地址栏中直接输入它们的URL,如图12-21所示。

图12-21 添加Web引用对话框

峰杰工作室

15

7) 在这里要调用的Web 服务在本机上,所以在地址栏输入Web 服务的地址如下:http://localhost:1271/2/Service.asmx (这是前面创建的Web 服务地址),然后单击“前住”按钮,将显示Service 的帮助页面,如图12-22所示。

图12-22 Service 的帮助页面

8) 单击“添加引用”按钮,就把引用添加到项目中,在“解决方案资源管理器”中看

到刚才添加的Web 引用。

9

) 添加代码。双击“计算”按钮,添加该按钮的单击事件代码,具体如下:

10)

单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱中的

按钮,运行程序,然后在文本框中输入数值,然后单击“计算”按钮,就可以计算出输入的两个数的和,如图12-23所示。

图12-23 Windows 应用程序引用Web 服务

0 第12章 XML 技术和Web 服务

16 12.3.3 Web 应用程序引用Web 服务

1) 单击菜单栏中的“文件/新建/网站”命令(快捷键:Ctrl+Alt+N ),弹出“新建网

站”对话框,设置模板为“ASP .NET 网站”,然后设置网站的位置及语言,单击“确定”按钮,就可以新建网站。

2)

修改当前网页标题为“

Web

应用程序引用Web 服务”,具体代码如下:

3) 在Web 设计界面中添加3个标签、2个文本框和1个按钮,属性设置后并调整他们

的位置后效果如图12-24所示。

图12-24 添加3个标签、2

个文本框和1个按钮

4) 下面实现Web 页面与Web 服务的关联。单击菜单栏中的“网站/添加Web 引用”命

令,弹出“添加Web 引用”对话框,如图12-25所示。

图12-25 添加Web 引用对话框

5) 在地址栏输入Web 服务的地址如下:http://localhost:1271/2/Service.asmx ,然后单击

“前住”按钮,将显示Service 的帮助页面,如图12-26所示。

峰杰工作室

17

图12-26 Service 的帮助页面

6) 单击“添加引用”按钮,就把引用添加到项目中,在“解决方案资源管理器”中看

到刚才添加的Web 引用。

7)

添加代码。双击“计算”按钮,添加该按钮的单击事件代码,具体如下:

8)

单击菜单栏中的“调试/启动调试”命令(快捷键:F5)或单击工具箱中的按

钮,运行程序,然后在文本框中输入数值,然后单击“计算”按钮,就可以计算出

输入的两个数的和,如图12-27所示。

图12-27 Web 应用程序引用Web 服务

0 第12章 XML 技术和Web 服务

18 实例 利用Web 服务实现计算器功能

1) 单击菜单栏中的“文件/新建/网站”命令(快捷键:Ctrl+Alt+N ),弹出“新建网

站”对话框,设置模板为“ASP .NET 网站”,然后设置网站的位置及语言,单击“确定”按钮,就可以新建网站。

2) 添加表格控件。单击工具箱中的控件,在Web 界面中单击添加该控件,然

后设置“Align ”属性为“center ”,“Style ”属性为“width: 450px ”。

3) 单击“源”选项卡,就可以看到Web 界面设计代码,然后设置网页标题信息为“利

用Web 服务实现计算器功能”,然后设置表格为2行1列,再输入说明性文字并美化,单击“设计”选项卡,效果如图12-28所示。

图12-28 利用表格布局页面

4) 在表格中添加1个文本框和16个按钮,属性设置后再调整他们的大小及位置后效果

如图12-29所示。

图12-29 添加1个文本框和16个按钮

5) 添加Web 服务。单击菜单栏中的“网站/添加新项”命令,弹出“添加新项”对话

框,选择“Web 服务”项,如图12-30所示。

图12-30 添加新项对话框

峰杰工作室

19

6) 设置好各参数,单击“添加”按钮,就在应用程序中添加一个Web 服务。然后编写

4个方法,分别为Sum 、Sub 、Mul 和Div ,实现加、减、乘和除运算功能,具体代码如下:

7) 下面实现Web 页面与Web 服务的关联。单击菜单栏中的“网站/添加Web 引用”命

令,弹出“添加Web 引用”对话框,如图12-31所示。

图12-31 添加Web 引用对话框

8) 单击“此解决方案中的Web 服务”,就可以找到刚添加的Web 服务,如图12-32所

0 第12章 XML 技术和Web 服务

20 示。

图12-32 查找刚添加的Web 服务

9) 单击找到的Web 服务,就可以看到刚定义的4个用于加、减、乘、除运算的方法,

如图12-33所示。

图12-33 4个用于加、减、乘、除运算的方法

10) 单击“添加引用”按钮,这样在Web 网页程序中就可以调用Web 服务定义的4种

方法。

11)

双击Web 设计页面,进入代码视图,首先定义

4个公用变量,具体代码如下:

12)

双击“

1”按钮,添加该按钮的单击事件代码,具体如下:

相关主题
相关文档
最新文档