Web设计中如何使用XML数据源对象
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>[url]http://someURL.com[/url]</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 [url]http://someURL.com[/url]
上面的脚本非常特殊化。下面给出一个更一般的脚本:
<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中的第一个数据项。
分享到:
相关推荐
【XML数据源对象的使用】 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、存储和展示。在Web开发中,XML数据源对象(XML Data Source Object,DSO)是一个关键概念,它允许开发...
XML数据源对象(DSO)是互联网技术中用于处理和展现XML数据的一种机制,特别是在早期Web开发中广泛使用。数据岛(Data Island)是DSO的核心概念,它是XML数据与HTML页面相结合的形式,使得XML数据可以直接在HTML文档...
"XML的数据源对象(数据岛)源代码"指的是利用XML数据岛技术构建的程序源代码。 XML数据岛的核心思想是将XML数据作为HTML页面的一部分,通过JavaScript或者微软的服务器端技术(如ASP.NET)来处理和显示这些数据。...
本文档将详细介绍如何使用ASP.NET中的GridView控件来操作XML数据源,并提供了一个具体的示例来帮助理解整个流程。 #### 二、环境配置与准备工作 为了能够顺利进行GridView对XML数据的操作,首先需要确保以下几个...
XML数据源对象(DSO,Data Source Object)是微软提供的一个ActiveX控件,尤其适用于基于Internet Explorer的环境。本文将详细介绍如何利用XML DSO在Web页面中处理和显示XML数据。 XML DSO是专为微软IE4及以上版本...
本文将深入探讨如何在`ReportViewer`中使用RDLC(Report Definition Language for Reporting Services)格式与XML数据源进行绑定,以及自定义数据源的相关知识。 首先,`RDLC`是一种XML格式,用于定义报表的布局和...
在ASP.NET中,高效地利用数据源文件,特别是XML,是构建动态Web应用程序的关键技能。XML(可扩展标记语言)是一种轻量级、结构化的数据存储格式,它允许开发者以独立于平台和语言的方式交换和处理数据。在这个主题中...
在ASP.NET页面中,可以使用控件如GridView、Repeater等直接绑定到XML数据源,方便地展示和操作XML数据。此外,XML还可以与DataSet、DataView等对象交互,实现数据的筛选、排序和分页。 接下来,Web服务是基于HTTP...
XML(eXtensible Markup ...Apache Commons Betwixt提供了一种灵活且易于使用的解决方案,使得在Java中处理XML数据变得更加便捷。通过深入学习和实践,你可以更好地掌握XML到Java对象的转换技巧,提升你的开发效率。
本篇将深入探讨JNDI(Java Naming and Directory Interface)数据源、数据库连接池以及它们在`Context.xml`和`web.xml`配置文件中的设置。 首先,理解JNDI数据源。JNDI是一种标准接口,允许Java应用查找和绑定命名...
水晶报表(Crystal Reports)是SAP公司的一款强大的...但以上步骤提供了一个基础框架,帮助初学者了解如何在C#中结合XML数据源使用水晶报表。记得在开发过程中,不断查阅官方文档和社区资源,以解决可能出现的问题。
Server Components,也称为ASP.NET服务器控件或Web控件,是在Web应用程序中使用的可重用代码单元。它们在服务器端执行,并将HTML发送到浏览器以显示结果。VB.NET中的Server Components可以是自定义用户控件或ASP.NET...
2. **绑定数据源**:将生成的XML数据源绑定到客户端的JavaScript变量或对象。这可以通过innerHTML属性或DOM解析方法实现,将XML字符串插入到HTML元素中。 3. **创建数据岛**:在HTML中创建一个隐藏的元素,如`<div>...
在BIRT中,数据源通常可以是数据库连接、XML文件、Web服务等。然而,当数据源为动态生成或者来自复杂的业务逻辑时,直接使用POJO对象作为数据源更为合适。这允许我们直接操作Java对象,避免了中间转换步骤,提高效率...
这可以通过控件的DataSource属性完成,可以设置为之前创建的数据源对象。 4. **指定数据绑定字段**:通过控件的DataMember属性或DataField属性(具体取决于控件类型),指定要显示或操作的数据字段。 5. **设置...
- 解释了如何在ASP.NET中处理XML数据,包括XML文档对象模型(DOM)、XML序列化和XPath查询。 8. **移动Web应用程序 (ch11 移动Web应用程序.ppt)** - 探讨了为不同移动设备优化ASP.NET应用的方法,可能包括响应式...
最后,"oracle-ds.xml"文件是JBoss服务器中针对Oracle数据库的数据源配置文件。在这个文件中,开发者会详细配置与Oracle数据库的连接参数,如数据库驱动类名、数据库连接URL、用户名、密码、连接池参数等。数据源在...