xml数据源对象是一个activex控件,允许你在xml文件和html页面之间操作数据。本文将向你展示如何从各种xml数据源中提取数据,以及如何使用javascript显示这些数据。
xml数据源对象dso是一个微软activex控件,构建在微软ie4以后的版本上。这个对象允许你把一个外部的xml文件或者嵌入html文件中的内容提取到html页面中。
你可以在一个web页面中使用xml - dso从一个外部xml文件中选取内容,从嵌入web页面的xml中提取xml数据,然后使用javascript操作这些数据。然而,并不建议在inte.net中使用这个对象,因为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> <span datasrc="#xmldb" datafld="sex"></span> </body> </html> |
| name | sex |
| premshree pillai | male |
| vinod | male |
| <!-- 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> |
| <!-- example3.xml --> <?xml version="1.0" ?> <ticker> <item> <message>javascript ticker using xml dso</message> <url>http://someurl.com</url> </item> </ticker> |
| <!-- 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> |
| <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"); |
| <!-- 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> |
| <!-- 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> |
| <!-- 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> |
| <!-- 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> |
| <a href="" datasrc="#ticker" datafld="url" class="tickerstyle"> <span datasrc="#ticker" datafld="message"></span> </a> |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器