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

2016-02-19 21:16 13 1 收藏

下面图老师小编要跟大家分享Web设计中如何使用XML数据源对象,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - Web开发 】

  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 SexPremshree Pillai maleVinod 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中的第一个数据项。
  

来源:http://www.tulaoshi.com/n/20160219/1625770.html

延伸阅读
在DELPHI数据库应用程序中,我们访问数据库通常有两种方法.一种是通过BDE数据库搜索引擎,即利用DELPHI自带的数据库驱动程序,这种方法的优点是速度快,但应用范围有限,当数据库版本更新时,有可能不能用于操作新的数据库;另一种方法是通过ODBC,这种方法的优点是可以随操作系统(如WINDOWS)提供,作为标准接口能适应多种数据库,缺点是...
标签: Web开发
在页面中使用数据库信息之前,您必须创建一个 ColdFusion 数据源。如果您运行的是 ColdFusion MX 7 或更高版本,您可直接在 Dreamweaver 中创建或修改数据源。如果您运行的是 ColdFusion MX,必须使用"ColdFusion MX 管理员"(服务器的管理控制台)创建或修改数据源。在这种情况下,您仍可使用 Dreamweaver 打开"ColdFusion MX 管理员"。 ...
标签: excel
Excel2013如何从数据源中提取条件数据   1、启动Excel2013,我们先在源数据表中A2单元格输入下面的公式,B1单元格要进行绝对引用,然后查询表中C1单元格同样如此。 2、回车键按下,得到结果1,双击填充柄,将表格中余下数据一并填充完整。 3、返回到查询表中,单击A4单元格,输入公式,稍后我跟大家说明。 4...
自定义的集合类 /// /// Collection 的摘要说明。 /// public class Collection : System.Collections.CollectionBase { public Collection() { for(int i = 0;i { base.InnerList.Add(new Element(i,string.Format("a[{0}]",i))); } } } 集合元素类 public class Element { private string name; public string ValueNa...
标签: 电脑入门
单元格区域、Excel 表、数据透视表或数据透视图均可以连接到外部数据源(数据源:用于连接数据库的一组存储的源信息。数据源包含数据库服务器的名称和位置、数据库驱动程 序的名称以及在登录到数据库时所需的信息。)。可以刷新数据以更新此外部数据源的数据。每次刷新数据时,均可以看到数据源中最新版本的信息,其中包括对数 据进行的任何更...

经验教程

297

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部