开发者社区


C++/C | Java | .Net/Windows | Linux/Unix | 开源 | 其他
首页 - 编程
编程
全文搜索:   

使用我们的WSC部件把ADO记录集转换成XML
作者: Mike D. Jones
2000-05-11 15:19:16



在1999年11月的文章"使用XML文档对象模型建立"中,我们演示了如何利用微软新的XML文档模型来创建XML文档。特别的是,我们对每个结点都用硬编码来演示XML节点的创建。但是,众多的变化经常需要从某个ADO记录集来动态地建立XML文档。虽然可以创建脚本来搜集特定的定段名称和字段值,但在每次把VB脚本用于不同的数据源时,还是要记录字段名称。如果能创建一个能从任何ADO记录集生成XML的过程,不是更好么?好的,不用等待未来,因为在本文中,我们将创建一个脚本部件,它就是这样做的。在阅读整篇文章时,我们将演示如何从象图A一样的ADO记录集来创建XML文档。尽管如此,在开始之前,让我们先看看一些转换ADO记录集到XML的战略。

图 A:  xml转换部件把多个ADO记录集转换成一个XML层级结构。

基本的单一表格转换

从最简单的方法说起,在把ADO记录集转换为XML时,是在每条记录间循环,然后为每个字段建立一个节点。例如,如果有一个保存作家信息的表,依次是由 AuthID(作家ID)和AuthName(作家名称)组成,那么先创建一个节点,名为AuthID,用数据填充它,然后再创建AuthName节点,用对应的数据填充它。不过,这是我们遇到的动态生成XML文档的第一个棘手方面。列表A显示了我们可能要用来实现这个基本技术的代码。它使用RootName(根名称)参数来指定XML文档的根节点名称。如果执行这段过程,将建立如图B所示的XML。

列表 A: 基本 ADO 转换

<% Sub BasicConversion(RootName)

Dim ADORst, XMLDoc, XMLRoot, XMLChild

Dim strConn As String, SQLString, fld

Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

         "Data Source=D:InetpubwwwrootBiblio.mdb"

SQLString = "Select Au_ID AS AuthID, _

Author as AuthName FROM Authors"

Set ADORst = Server.CreateObject("ADODB.Recordset")

ADORst.Open SQLString, strConn, 1

ADORst.MoveFirst

Set XMLRoot = XMLDoc.createElement(RootName)

XMLDoc.appendChild XMLRoot

Do Until ADORst.EOF

  For Each fld In ADORst.Fields

Set XMLChild = XMLDoc.createElement(fld.Name)

    If Not IsNull(fld.Value) Then XMLChild.Text = CStr(fld.Value)

    XMLRoot.appendChild XMLChild 

  Next

  ADORst.MoveNext

Loop

XMLDoc.save "D:InetPubwwwrootXMLBasic.xml"

Set XMLChild = Nothing

Set fld = Nothing

Set ADORst = Nothing

Set XMLDoc = Nothing

End Sub

%>

图 B: 使用基本转换技术,创建一个XML文档。
警告: XML 标记名称不能包含表A中的特殊字符串或空格。因此,在使用ADO字段名作为XML标记时,如果必要的话,要确保在SQL语句中把表的字段改名。

表 A:  XML 保留字符

<

&lt;

&

&amp;

>

&gt;

"

&quot;

'

&apos;


  下一页
  第一个错误

【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号