`
jayjayjays
  • 浏览: 214123 次
  • 性别: 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 上用,,,

相关推荐

    XML数据源对象的使用

    【XML数据源对象的使用】 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、存储和展示。在Web开发中,XML数据源对象(XML Data Source Object,DSO)是一个关键概念,它允许开发...

    前端开源库-xml-js

    相反,当需要与后端系统进行通信,或者数据源提供的是XML格式时,XML到JavaScript对象的转换就显得非常实用。 XML-js库的工作原理主要包括以下几个步骤: 1. **XML解析**:库首先解析XML字符串,将其转化为DOM...

    Web设计中如何使用XML数据

    XML数据源对象(DSO)是微软提供的一种ActiveX控件,主要应用于IE4及更高版本的浏览器中,允许Web开发者将XML数据集成到HTML页面中进行动态操作。然而,由于其对浏览器的兼容性限制,DSO对象并不推荐在互联网环境中...

    前端项目-fast-xml-parser.zip

    【前端项目-fast-xml-parser】是一个专为前端开发者设计的高效XML解析库,它能够在JavaScript环境中,无需依赖C或C++扩展,快速地将XML数据转换为JS对象或JSON格式。这个项目对于处理XML格式的数据尤其有用,比如在...

    XML的数据源对象(数据岛)源代码

    "XML的数据源对象(数据岛)源代码"指的是利用XML数据岛技术构建的程序源代码。 XML数据岛的核心思想是将XML数据作为HTML页面的一部分,通过JavaScript或者微软的服务器端技术(如ASP.NET)来处理和显示这些数据。...

    XML数据源对象DSO介绍.pptx

    XML数据源对象(DSO)是互联网技术中用于处理和展现XML数据的一种机制,特别是在早期Web开发中广泛使用。数据岛(Data Island)是DSO的核心概念,它是XML数据与HTML页面相结合的形式,使得XML数据可以直接在HTML文档...

    web的xml技术

    - **DOM操作**:使用JavaScript操作XML文档。 #### XMLHttpRequest对象 - **发送HTTP请求**:用于从服务器请求数据。 - **接收HTTP响应**:处理服务器返回的数据。 #### XMLParser - **解析XML文档**:将XML字符串...

    搭建struts1.x环境例子源码

    WEB-INF下有web.xml配置文件,src中存放Java源代码,WebContent用于放置HTML、JSP、CSS、JavaScript等静态资源。 **步骤二:添加Struts1.x依赖** 由于上传限制,你需要从提供的链接或其它可靠来源下载Struts1.2的...

    camunda-xml-model-7.1.0-alpha4.zip

    Angular是一个流行的前端开发框架,由Google维护,用于构建动态的、数据驱动的Web应用程序。这里提到的是它的一个版本,可能与Camunda BPM集成,提供了服务和指令,以帮助开发者在Angular应用中轻松地集成和操作...

    基于SQL Server XML技术的数据驱动Web设计.pdf

    为了弥补HTML的不足,各种技术被应用来扩充HTML的功能,如通过JavaScript或VBScript脚本增加Web页面的动态功能,通过在Web服务器中使用IDC、CGI或ISAPI程序,或者使用ASP、PHP与JSP技术扩充Web服务器的功能,以实现...

    用XML轻松开发WEB站点(PDF)

    - XML作为数据源:XML可以作为网页的数据源,通过JavaScript或其他技术动态展示数据。 - XSLT(XML Stylesheet Language Transformations):用于转换XML文档,将XML数据转化为HTML或其他格式,便于浏览器呈现。 ...

    <<JavaScript DOM 高级程序设计>> 一书的配套源代码

    《JavaScript DOM 高级程序设计》是一本深入探讨JavaScript与DOM(Document Object Model)交互的专著,旨在帮助读者掌握高级的DOM操作技巧,提升Web前端开发能力。这本书的配套源代码提供了书中所有示例的实际实现...

    前端开源库-xml-splitter

    【前端开源库-xml-splitter】是一个专门针对前端...总的来说,xml-splitter是一个强大的前端工具,对于处理大量XML数据的开发者来说,它提供了有效的文件拆分和节点提取能力,有助于提升前端应用的性能和用户体验。

    精品专题(2021-2022年收藏)springMVC配置文件详解要点.doc

    这通常用于初始化一些全局的bean,例如数据源、事务管理器等: ```xml &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; ``` 4. **错误...

    前端开源库-node-xml-lite

    在IT行业中,前端开发是构建Web应用程序的重要组成部分,而处理XML数据是许多应用程序不可或缺的一环。"前端开源库-node-xml-lite"是一个专为前端开发者设计的轻量级XML处理库,尤其适用于Node.js环境。这个库以纯...

    .net开发,XML做数据源的省市级联例子

    这个例子中的"city"文件可能是包含全国城市数据的文本文件,格式可能是类似上面的XML结构,或者是其他格式,如CSV,用于填充到XML数据源中。开发者将其提供,以便其他人可以复用或参考。 总之,这个案例展示了如何...

    JavaScript XML联动菜单

    这种设计主要依赖于JavaScript的DOM操作和XML数据的解析,以提供灵活的数据存储和更新能力。以下将详细介绍这一技术的关键知识点: 1. **XML(可扩展标记语言)**:XML是一种用于标记数据的语言,它的结构清晰,...

    xml操作大全(xmlweb)

    XML(Extensible Markup Language)是一种用于标记数据的语言,它的设计目标是传输和存储数据,而不是显示数据。...通过实践这些例子,你可以提高处理XML数据的能力,为将来的工作或项目打下坚实的基础。

    使用XML实现分页显示数据

    在实现分页显示数据的过程中,XML文件通常作为数据源,存储着待展示的数据。例如,一个简单的XML数据文件可能如下所示: ```xml &lt;database&gt; &lt;page number="1"&gt; &lt;record id="1"&gt;John Doe&lt;/record&gt; &lt;record id="2"...

Global site tag (gtag.js) - Google Analytics