开发者社区


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

把Recordset直接转换成XML
作者: ZDNet China
2003-07-11 10:52:39



这就打开了DOMDocument上的Istream界面并把XML数据以XML的格式直接写到DOMDocument。这个XML数据包括了通常没有什么价值的名字空间信息,所以如果你只想获得“纯的”XML,你就必须把这个XML添加到客户端的XML数据岛并通过XSL转换来传递它。使用XSL,你就可以把该XML(它包括了行和数据定义的大纲信息)转换成只包含你感兴趣的XML。我已经创建了一个普通XSL样式表来把任何简单Recordset XML转换成普通XML:
 
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:z="#RowsetSchema">
    <s:Schema id="RowsetSchema"/>
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:template match="/">
    <xsl:apply-templates select="//z:row"/>
</xsl:template>
 
<xsl:template match="z:row">
    <xsl:text disable-output-escaping="yes">&lt;row&gt;</xsl:text>
        <xsl:for-each select="@*">
            <xsl:text disable-output-escaping="yes">&lt;</xsl:text>
            <xsl:value-of select="name()"/>
            <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
            <xsl:value-of select="."/>
            <xsl:text disable-output-escaping="yes">&lt;/</xsl:text>
            <xsl:value-of select="name()"/>
            <xsl:text disable-output-escaping="yes">&gt;</xsl:text>
        </xsl:for-each>
    <xsl:text disable-output-escaping="yes">&lt;/row&gt;</xsl:text>
</xsl:template>
</xsl:stylesheet>

 
这个样式表把每个z:row节点转换成一个更自然的形式。当该Recordset保存为XML,每个行都转换成一个z:row节点(它带有一组属性,每个属性对应与记录中的一个字段)。字段属性设置为当前字段值。

每个属性被转换成<fieldname>fieldvalue</fieldname>的格式。为了防止名字空间信息附加到新的节点上,我用了<xsl:text>元素来创建< and >符号而不是用<xsl:element>来创建新的元素。

name() XPath函数返回属性的名字,属性的值用“.”来返回。在转换之后,所有的新节点都被包装到一个<row>元素中。

下面是进行这个转换的代码:
 
Dim oXSL
Set oXSL = Server.CreateObject("MSXML2.DOMDocument")
oXSL.async = False
oXSL.loadServer.MapPath("ADOGeneric.xsl") 'our XSL stylesheet
Response.Write "<XML id='xmlData' name='xmlData'><root>" & vbCrLf
Response.WriteoXML.transformNode(oXSL)
Response.Write "</root></XML>"

 
上面的代码会为你产生“干净”的XML。关于XSLT的更多信息,请参阅MSDN库的微软XSLT参考



责任编辑:炒饭

欢迎评论或投稿

【上一页】
声明:
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) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号