XML数据源对象是一个ActiveX控件允许你在XML文件和HTML页面之间操作数据本文将向你展示如何从各种XML数据源中提取数据以及如何使用JavaScript显示这些数据
XML数据源对象DSO是一个微软ActiveX控件构建在微软IE以后的版本上这个对象允许你把一个外部的XML文件或者嵌入HTML文件中的内容提取到HTML页面中
你可以在一个Web页面中使用XML DSO从一个外部XML文件中选取内容从嵌入Web页面的XML中提取XML数据然后使用JavaScript操作这些数据然而并不建议在Internet中使用这个对象因为DSO只能工作在MSIE 以上的浏览器中因此这可能会带来一些兼容性问题 所以在企业内部网使用XMLDSO是很合适的
开始
为了初始化XML DSO对象我们使用<OBJECT>标记 用于XMLDSO的CLASSID是
CLSID:ddadcabecd
这ID唯一标识XMLDSO使用下面的代码在一个Web页面中初始化这个控件
<OBJECT ID=SomeID CLASSID=CLSID:ddadcabecd></OBJECT>
虽然大部分对象需要许多参数与之相关联但是XMLDSO不需要任何参数
使用一个XML数据岛析取数据
首先通过使用<XML>标记包含一个XML数据岛其次给它分配一个IDxmldb 以备以后使用 数据实际上是使用HTML标记<ALT><SPAN><DIV>等等提取的代码列表中的代码使用了<SPAN>标记datasrc属性指定了你想从中提取数据的那个数据岛datafld属性指定了你想要的数据的XML标记所以第一个<SPAN>提取名称而第二<SPAN>提取性别
代码列表
<! >
<html>
<head>
<title>XML </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>
注意这段代码没有初始化一个XMLDSO对象这是因为XML数据岛的使用中已经隐式地创建了一个输出应为
Premshree Pillai
male
注意在XML数据岛中有两个<name>和<sex>标记使用这个方法你只能提取这些标记中的第一个实例代码列表中的代码使用<TABLE>标记提取所有的实例
输出将是:
Name Sex
Premshree Pillai male
Vinod male
在代码列表中<TABLE>标记使用<TD>标记内的<DIV>标记提取数据表格将自动重复<member>(<name>和<sex>的母标记)的每个实例
代码列表
<! >
<html>
<head>
<title>XML </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=>
<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文件提取数据
为了使用XMLDSO加载一个外部XML文件你必须显式的包含这个对象并且使用一些JavaScript
首先创建一个XMLDSO对象使用ID myXML添加宽度和高度属性到<OBJECT>标记中然后设置它们的值为这保证XMLDSO对象不会占据你的Web页面的任何空间
其次使用datasrc创建一个象myXML一样的表类似于代码列表中一样代码使用<DIV>标记(在TD标记之)提取数据使用datafld作为第一栏的信息并且使用URL作为第二栏添加<SCRIPT>标记因为在这里外部的XML使用Java脚本显式地声明你想要加载的XML文件
设置变量xmlDso为myXMLXMLDocumentmyXML引用你已经创建的对象接下来使用XMLDSO的load()方法加载examplexml文件examplexml连接到对象myXML上
<! examplexml >
<?xml version= ?>
<ticker>
<item>
<message>JavaScript Ticker using XML DSO</message>
<URL></URL>
</item>
</ticker>
现在研究一下下面的HTML页面:
<! >
<html>
<head>
<title>XML </title>
<script language=JavaScript>
function load() {
var xmlDso=myXMLXMLDocument;
xmlDsoload(examplexml);
}
</script>
</head>
<body bgcolor=#FFFFFF onLoad=load()>
<object id=myXML CLASSID=clsid:ddadcabecd
width= height=></object>
<table datasrc=#myXML border=>
<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
上面的脚本非常特殊化下面给出一个更一般的脚本
<script language=JavaScript>
var xmlDso;
function load(xmlFile objName) {
eval(\\xmlDso=\\+objName+\\XMLDocument\\);
xmlDsoload(xmlFile);
}
</script>
Now to load any XML file use:
load(SomeXMLFilexmlanyXmlDsoObject);(csdn)