用XML优化二次检索

熙若春风

熙若春风

2016-02-19 14:48

今天图老师小编要向大家分享个用XML优化二次检索教程,过程简单易学,相信聪明的你一定能轻松get!

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

在搜索引擎的设计以及类似的软件功能设计中,一个必不可少的功能就是:对已有搜索结果的二次检索。如果检索的数据集是静态数据(例如存放在数据库中),通常的做法是在已有的检索条件的基础上,动态加入新的约束条件。但是重新构造数据检索的约束条件,往往需要用户同服务器再次交互,重新下载所需数据集合并输出。如果能在客户端对已经下载的数据集合进行二次检索,将极大地减轻Web服务器以及数据库服务器的负担。
XML能够很大程度地满足以上需求。它将数据内容本身与数据显示格式独立开来,分别处理。这样,如果需要改变文档的显示方式,只要修改样式文件(XSL)就可以了。XML的自我描述特性能够很好地表现许多复杂的数据关系,使得基于XML的应用程序可以在XML文件中准确高效地搜索相关的数据内容,忽略其他不相关的部分。同时,整个数据操作都是在客户端完成,大大减轻了服务器的负担。
XML编程接口DOM简介
DOM(Document Object Model,文档对象模型)是一种与平台和语言无关的编程接口,它允许程序和脚本动态访问和修改文档的内容结构和类型。它定义了一系列的对象和方法对DOM树的节点进行各种随机操作。
● Document对象:是DOM树的最顶层节点,是对整个文档进行操作的入口。
● Element和Attr对象:这些节点对象都是文档某部分的映射,节点的层次恰好反映了文档的结构。
● Text对象:作为Element和Attr对象的子节点,Text对象表达了元素或属性的文本内容。Text节点不再包含任何子节点。
● 集合索引:DOM提供了多种集合索引方式,可以对节点按指定方式进行遍历。
DOM采用以上介绍的一系列接口来描述XML文档的内容和结构,即利用对象将文档模型化。这种对象模型实现的基本功能包括:
● 描述文档表示和操作的接口;
● 接口的行为和属性;
● 接口之间的关系以及互操作。
DOM对结构化的XML文档进行解析,文档中的元素、实体、属性等所有个体都可以用对象模型表示。整个文档的逻辑结构类似一棵树,生成的对象模型就是树的节点,每个对象同时包含了方法和属性。DOM提供了许多查找节点的方法。其中用于搜索的方法有:
● 根据标签名称搜索元素: 利用Document对象中的getElementsByTagName方法在全文范围内查找元素;
● 使用XSL模式搜索节点:所有类型的节点都带有selectNodes方法,调用这个方法可以利用XSL的模式匹配策略查找节点;
● 使用集合索引搜索节点: 索引参数都是从0开始计数的,例如子节点ChildNodes对象集。
利用DOM,开发人员可以动态地创建XML、遍历文档、增加(删除/修改)文档内容。DOM提供的API与编程语言无关,所以对一些DOM标准中没有明确定义的接口,不同解析器的实现方法有可能有所差别。本文的示例采用MSXML DOM方案,并采用IE 5.0作为输出显示的浏览器。
软件实现
以下用一个简单的学生成绩查询系统为例具体说明如何实现。可以先按照学生所在的班级将学生成绩查询出来,然后可以选出平均分高于设定分数(用一个文本框接收设定分数)的学生列表。
在SQL Server中包含一个学生成绩表,关键字段有:学生姓名(Name)、班级(Class)、单科成绩(YuWen、ShuXue、JiSuanJi、YingYu等)、平均成绩(AverageScore)。
首先,编辑初始页面以提供按班级查询学生成绩的功能。
form method=post action=MyRearch. asp
输入班号: input type=text name=ClassName
input type=submit value=“提交”input type=reset value=“重填”
/form
MyRearch.asp文件中,提供按平均成绩查询的二次查询功能。关键代码如下:
%@ Language=VBScript %
//建立数据库连接,并根据用户需求,从数据库中检索出所有符合要求的数据集
% Set Conn=Server.CreateObject(“ADODB.connection”) %
% Set rs=server.CreateObject(“ADODB.recordset”) %
% Conn. open Application(“SQLserver
Conn”) %
% sqlText=“select * from ScoreTable where Class=‘” %
% sqlText=sqlText & request.Form(“ClassName”) & “’” %
% set rs=conn.Execute(sqlText) %
% rs.MoveFirst %
//在HMTL文件中建立一个XML数据对象(XML数据岛)
//并且将数据库检索的数据集写入该数据岛中
XML ID=“StudentList” //该数据对象的唯一标识为StudentList
?xml version=“1.0” ?
Students
% do while not rs.EOF %
Student
% for i=0 to rs.Fields.Count-1 %
//以数据库表的列名为XML节点的节点名
%=rs.Fields(i).Name %
   %=rs.Fields(i).Value %
 /%=rs.Fields(i).Name %
% next %
% rs.MoveNext %
/Student
% loop %
/Students
/XML
//二次检索的结果集XML对象(XML数据岛)

125/AverageScore
/Student
……
/Students
/XML
以上代码在数据库为SQL Server 7.0、操作系统为NT 4.0、Web服务器为IIS 4.0、浏览器为IE 5.0的条件下编译调试通过。
结 论
由于所有对数据集对象的操作是在客户端完成的,实际上是服务器数据对象的一份复制品,这样做的好处是避免了网络承受大量数据通信的负担。当然,这时用户在客户端做的所有操作对服务器上存储的数据毫无影响,如果要想对服务器记录也进行修改,那么就要用到客户端与服务器端的数据交互技术(XMLHTTP对象)了,这里就不再进行讨论。

 (本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

展开更多 50%)
分享

猜你喜欢

用XML优化二次检索

Web开发
用XML优化二次检索

用ps设计二次曝光效果

电脑网络
用ps设计二次曝光效果

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

二次曝光摄影作品

平面设计 海报设计 广告设计 画报设计 签名设计 服装设计 名片设计 画册设计 版式设计 商标设计
二次曝光摄影作品

阴茎能二次增长吗

生活常识
阴茎能二次增长吗

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

公积金二次置业如何贷款

生活常识
公积金二次置业如何贷款

怎样二次利用剩茶叶

茶叶 生活小常识
怎样二次利用剩茶叶

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JSP+XML的技术纲要(3)

JSP+XML的技术纲要(3)

XML与其相关技术(1)

XML与其相关技术(1)
下拉加载更多内容 ↓