`
jayjayjays
  • 浏览: 209527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用javascript操作xml-->Web设计中如何使用XML数据源对象(转载)

    博客分类:
  • js
阅读更多
Web设计中如何使用XML数据源对象
http://www.100down.com/download/infoview/Article_1225.html
日期:2004年6月29日 作者: 人气: <script src="../Hits.asp?ArticleID=1225"></script> 127 查看:[大字体 中字体 小字体] <script src="../inc_script/article_ads_view_500x.js"></script>
<!---->
<script src="../inc_script/article_ads_view_250x180.js"></script>
<!---->  XML数据源对象是一个ActiveX控件,允许你在XML文件和HTML页面之间操作数据。本文将向你展示如何从各种XML数据源中提取数据,以及如何使用JavaScript显示这些数据。

  XML数据源对象DSO是一个微软ActiveX控件,构建在微软IE4以后的版本上。这个对象允许你把一个外部的XML文件或者嵌入HTML文件中的内容提取到HTML页面中。

  你可以在一个Web页面中使用XML - DSO从一个外部XML文件中选取内容,从嵌入Web页面的XML中提取XML数据,然后使用JavaScript操作这些数据。然而,并不建议在Internet中使用这个对象,因为DSO只能工作在MSIE 4以上的浏览器中,因此这可能会带来一些兼容性问题。 所以,在企业内部网使用XML-DSO是很合适的。

  开始

  为了初始化XML - DSO对象,我们使用<OBJECT>标记。 用于XML-DSO的CLASSID是:

    CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39

  这ID唯一标识XML-DSO。使用下面的代码在一个Web页面中初始化这个控件:

  <OBJECT ID="SomeID" CLASSID="CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39"></OBJECT>

  虽然大部分对象需要许多参数与之相关联,但是XML-DSO不需要任何参数。

  使用一个XML数据岛析取数据

  首先,通过使用<XML>标记包含一个XML数据岛。其次,给它分配一个ID,xmldb --以备以后使用。 数据实际上是使用HTML标记:<ALT>,<SPAN>,<DIV>等等提取的。代码列表1中的代码使用了<SPAN>标记。datasrc属性指定了你想从中提取数据的那个数据岛。datafld属性指定了你想要的数据的XML标记。所以,第一个<SPAN>提取名称,而第二<SPAN>提取性别。

  代码列表1:

<!-- example1.htm -->
<html>
<head>
<title>XML DSO-example1.htm</title>
</head>
<body bgcolor="#FFFFFF">
<xml id="xmldb">
<db>
<member>
<name>Premshree Pillai<name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
</db>
</xml>

<span datasrc="#xmldb" datafld="name"<</span>
<br>
<span datasrc="#xmldb" datafld="sex"></span>

</body>
</html>

  注意这段代码没有初始化一个XML-DSO对象。这是因为XML数据岛的使用中已经隐式地创建了一个。输出应为:
  
  Premshree Pillai
  male

  注意在XML数据岛中有两个<name>和<sex>标记。使用这个方法,你只能提取这些标记中的第一个实例。代码列表2中的代码使用<TABLE>标记提取所有的实例:

  输出将是:
   
Name Sex
Premshree Pillai male
Vinod male

  在代码列表2中,<TABLE>标记使用<TD>标记内的<DIV>标记提取数据。表格将自动重复<member>(<name>和<sex>的母标记)的每个实例。

  代码列表2:

<!-- example2.htm -->
<html>
<head>
<title>XML DSO-example2.htm</title>
</head>
<body bgcolor="#FFFFFF">

<xml id="xmldb">
<db>
<member>
<name>Premshree Pillai<name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
</db>
</xml>

<table datasrc="#xmldb" border="1">
<thead>
<th>Name</th>
<th>Sex</th>
</thead>
<tr>
<td><div datafld="name"></div></td>
<td><div datafld="sex"></div></td>
</tr>
</table>

</body>
</html>

  使用外部XML文件提取数据

  为了使用XML-DSO加载一个外部XML文件,你必须显式的包含这个对象并且使用一些JavaScript。

  首先创建一个XML-DSO对象,使用ID myXML。添加宽度和高度属性到<OBJECT>标记中,然后设置它们的值为0。这保证XML-DSO对象不会占据你的Web页面的任何空间。

  其次,使用datasrc创建一个象myXML一样的表--类似于代码列表2中一样。代码使用<DIV>标记(在TD标记之)提取数据,使用datafld作为第一栏的信息,并且使用URL作为第二栏。添加<SCRIPT>标记,因为在这里,外部的XML使用Java脚本显式地声明你想要加载的XML文件。

  设置变量xmlDso为myXML.XMLDocument。myXML引用你已经创建的对象。接下来,使用XML-DSO的load()方法加载example3.xml。文件example3.xml连接到对象myXML上。

<!-- example3.xml -->
<?xml version="1.0" ?>
<ticker>
<item>
<message>JavaScript Ticker using XML DSO</message>
<URL>http://someURL.com</URL>
</item>
</ticker>

  现在,研究一下下面的HTML页面:

<!-- example3.htm -->
<html>
<head>
<title>XML DSO-example3.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myXML.XMLDocument;
xmlDso.load("example3.xml");
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myXML" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<table datasrc="#myXML" border="1">
<thead>
<th>Message</th>
<th>URL</th>
</thead>
<tr>
<td><div datafld="message"></div></td>
<td><div datafld="URL"></div></td>
</tr>
</table>

</body>
</html>

  输出应是:

   Message URL
   JavaScript Ticker using XML DSO http://someURL.com

  上面的脚本非常特殊化。下面给出一个更一般的脚本:

<script language="JavaScript">
var xmlDso;
function load(xmlFile, objName) {
eval('xmlDso='+objName+'.XMLDocument');
xmlDso.load(xmlFile);
}
</script>
Now, to load any XML file use:
load("SomeXMLFile.xml","anyXmlDsoObject");

  使用XML-DSO和JavaScript

  假设你有一个包含姓名、电子邮件地址和电话号码的XML文件。你想使用它构建一个应用程序,显示每个人的档案--一次显示一个。用户将使用"Next"和"Previous"按钮浏览每个人的数据。Javascript可以帮助你实现这个目的。

  下面的代码使用记录集方法把文件中所有的数据保存到一个变量memberSet中。moveNext()方法指向下一个数据项(下一行)。脚本然后载入XML文件example4.xml,把记录保存到变量memberSet中。第一个记录将被显示,但是memberSet.moveNext()指向文件中相对于前一个指定数据的下一个记录。

<!-- example4.xml -->
<?xml version="1.0" ?>
<myDB>
<member>
<name>Premshree Pillai</name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
<member>
<name>Santhosh</name>
<sex>male</sex>
</member>
</myDB>

  这里是相应的HTML文件:

<!-- example4.htm -->
<html>
<head>
<title>XML DSO-example4.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myDB.XMLDocument;
xmlDso.load("example4.xml");

/* Get the complete record set */
var memberSet=myDB.recordset;

/* Go to next data */
memberSet.moveNext();
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<span datasrc="#myDB" datafld="name"></span>

</body>
</html>

  输出应是:

   Vinod

  下面给出更多使用JavaScript操作XML-DSO的方法:

   · movePrevious(): 指向前一个数据项。

   · moveFirst(): 指向第一个数据项。

   · moveLast(): 指向最后一个数据项。

   · EOF: 这个属性用来检测我们是否已经到达数据记录的底部。

  使用XML-DSO和JavaScript

  假设你有一个包含姓名、电子邮件地址和电话号码的XML文件。你想使用它构建一个应用程序,显示每个人的档案--一次显示一个。用户将使用"Next"和"Previous"按钮浏览每个人的数据。Javascript可以帮助你实现这个目的。

  下面的代码使用记录集方法把文件中所有的数据保存到一个变量memberSet中。moveNext()方法指向下一个数据项(下一行)。脚本然后载入XML文件example4.xml,把记录保存到变量memberSet中。第一个记录将被显示,但是memberSet.moveNext()指向文件中相对于前一个指定数据的下一个记录。

<!-- example4.xml -->
<?xml version="1.0" ?>
<myDB>
<member>
<name>Premshree Pillai</name>
<sex>male</sex>
</member>
<member>
<name>Vinod</name>
<sex>male</sex>
</member>
<member>
<name>Santhosh</name>
<sex>male</sex>
</member>
</myDB>

  这里是相应的HTML文件:

<!-- example4.htm -->
<html>
<head>
<title>XML DSO-example4.htm</title>
<script language="JavaScript">
function load() {
var xmlDso=myDB.XMLDocument;
xmlDso.load("example4.xml");

/* Get the complete record set */
var memberSet=myDB.recordset;

/* Go to next data */
memberSet.moveNext();
}
</script>
</head>
<body bgcolor="#FFFFFF" onLoad="load()">

<object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39"
width="0" height="0"></object>

<span datasrc="#myDB" datafld="name"></span>

</body>
</html>

  输出应是:

   Vinod

  下面给出更多使用JavaScript操作XML-DSO的方法:

   · movePrevious(): 指向前一个数据项。

   · moveFirst(): 指向第一个数据项。

   · moveLast(): 指向最后一个数据项。

   · EOF: 这个属性用来检测我们是否已经到达数据记录的底部。

  initTicker()首先检查是否有IE 4+。如果浏览器是IE4+,这个XML文件被作为一个参数被传递并载入。如果定时器失败了,那么调用xmlDsoTicker()函数。xmlDsoTicker()除了xmlFile参数以外,和initTicker()有相同的参数,因为XML文件已经被载入。xmlDsoTicker()检查变量counter(初始值为maxMsgs)是否小于maxMsgs-1。如果是,moveNext()方法指向tickerSet中下一个数据项。

  HTML页面的BODY包含下面的代码:

<a href="" datasrc="#ticker" datafld="URL" class="tickerStyle">
<span datasrc="#ticker" datafld="message"></span>
</a>


图1:定时器应用程序显示输出。

  在这段代码中,<A>标记把XML文件的URL作为它的datafld。<SPAN>标记把XML文件的信息作为它的datafld。这个信息在<SPAN>元素中显示,然后整个信息可以通过这段信息相应的URL连接。

  这样,<A>和<SPAN>元素包含下一个数据项(URL和信息)。在一段延迟以后,<A>和<SPAN>指向下一个数据。只要counter<maxMsgs-1(计数器每次递增),这个操作就会发生。如果counter<maxMsgs-1是假,计数器就被设置为0,然后指向tickerSet中的第一个数据项。
分享到:
评论
1 楼 yywu 2009-07-14  
不错,可惜只能在IE 上用,,,

相关推荐

    Web设计中如何使用XML数据

    XML数据源对象DSO是一个微软ActiveX控件,构建在微软IE4以后的版本上。这个对象允许你把一个外部的XML文件或者嵌入HTML文件中的内容提取到HTML页面中。你可以在一个Web页面中使用XML - DSO从一个外部XML文件中选取...

    以XML为级联数据源的JavaScript树型选择器

    以XML文件作级联数据源,采用树形控件显示,节点可选择Radiobutton,CheckBox,PlainText等类型。

    xml-beautify:JS的XML漂亮格式化程序

    xml-美化 xml-beautify-以XML格式打印漂亮的文本。 它是根据获得。 如何使用?...[之前]源XML &lt;? xml version = " 1.0 " encoding = " utf-8 " ?&gt;&lt; example xss=removed&gt; &lt; head &gt; &lt; ti

    JavaScript完全自学宝典 源代码

    16.4.html 在JavaScript中使用FileSystemObject操作本地文件的方法。 第18章(\c18) 示例描述:学习XMLHttpRequest对象。 18.1.html 使用Ajax获取HTTP头信息。 18.2.html 使用Ajax获取全部响应头信息...

    JavaScript王者归来part.1 总数2

    图书目录  第一部分 概论  第1章 从零开始  1.1 为什么选择... 16.3 定时器使用--侦听与拦截   16.3.1 标准模式--监视器及其范例   16.3.2 使用定时器时应当注意的问题   16.4 一个例子--漂亮的Web...

    xml-micro-exchange-js:基于XML和XPath的易失性NoSQL无状态微数据源,用于Web应用程序和IoT的数据交换(node-js的实现)

    基于XML的数据源是易变的,可以通过连续使用而生存,而由于不活动而到期。 它们设计用于主动和接近实时的数据交换,而不是作为具有实时能力的长期存储。 与JSON存储相比,此数据源支持更多的动态性,部分数据访问,...

    JavaScript+xml 统计图表生成

    强大的统计图表生成,数据源支持xml,excel非常好用

    JavaScript开发技术大全 - 光盘源代码.rar

    第02章 开始JavaScript 第03章 数据类型 第04章 直接量 ...第16章 其他对象操作 第17章 Cookie 第18章 文档对象模型 第19章 正则表达式 第20章 Ajax介绍 第21章 Ajax与服务器 第22章 Ajax与XML 第23章 Ajax与CSS

    asp.net专家疑难解答200问

    如何将XML作为数据源绑定到控件 &lt;br&gt; 第8章 数据库设计 &lt;br&gt;143.ASP.NET应用程序如何实现与SQL Server数据库的连接&lt;br&gt;144.ASP.NET应用程序如何实现与ACCESS数据库的连接 &lt;br&gt;146.如何使用ADO.NET在数据库执行SQL...

    21天学通JavaScript 源代码2(有一部分在源码1文件中)

    第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术...

    基于Java与Web技术的KettleWeb数据集成平台源码

    此平台源码基于Kettle原生版本6.1.0.1开发,扩展了Web端操作功能,便于用户进行数据集成工作。 技术栈:项目主要采用Java语言进行开发,同时整合了JavaScript、CSS等前端技术。 文件组成:总计2439个文件,其中...

    XML 讲解和分析

    虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML...

    javascript

    第16章 其他对象操作 第17章 Cookie 第18章 文档对象模型 第19章 正则表达式 第20章 Ajax介绍 第21章 Ajax与服务器 第22章 Ajax与XML 第23章 Ajax与CSS 注意:在第21章、22章和23章的代码中扩展名为.asp的文件必须...

    PHP论文格式化系统-前台的设计与实现(源代码+论文)

    系统也提供学生和导师的论文交互平台,论文交互平台采用了php脚本编写了数据库操作类和常用函数类,然后用这些类创建新的对象来使用对象中的方法,比如数据库连接的方法,数据库查询方法,上传论文的方法等。...

    21天学通JavaScript 源代码1(还有10章在源代码2文件)

    第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术...

    PHP论文格式化系统-前台的设计与实现(源代码+论文).zip

    系统也提供学生和导师的论文交互平台,论文交互平台采用了php脚本编写了数据库操作类和常用函数类,然后用这些类创建新的对象来使用对象中的方法,比如数据库连接的方法,数据库查询方法,上传论文的方法等。...

    JavaScript入门经典(第3版) 附书源代码.rar

    ”小测试的简介1.6 小结第2章 avaScript中的数据类型与变量2.1 JavaScript中的数据类型2.2 变量——保存在内存中的数据2.3 设置浏览器以显示错误信息2.4 使用数据——计算数值及字符串的基本操作2.5 数据类型转换2.6...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    11.6.4 在异步任务中使用缓存 11.6.5 多异步任务和超时 11.7 总结 第12章 文件和流 12.1 使用文件系统 12.1.1 Directory类和File类 12.1.2 DirectoryInfo类和FileInfo类 12.1.3 DriveInfo类 12.1.4...

    《JavaScript实例精通》[源代码]

    16_7.htm 显示XML数据表格。 16_8.htm 服务器端的动态建议。 第17章(\17) 示例描述:Prototype基础应用。 17_1.htm 使用$()得到html元素。 17_2.htm 使用$F()返回表单输入控件的值。 17_3.htm 使用$A()...

Global site tag (gtag.js) - Google Analytics