Web设计中如何使用XML数据源对象
[入库:2005年8月18日] [更新:2007年3月25日]
web设计中如何使用xml数据源对象
日期:2003-6-12 11:38:27 出处:yesky.com 作者:- |
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"); | |
本文关键:javascript xml 网页
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)