分享
 
 
 

Web设计中如何使用XML数据源对象(2)

王朝other·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

使用外部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中的第一个数据项。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有