`
txf2004
  • 浏览: 7132171 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ASP 与 XML

阅读更多
筆者為微軟台北廳、TechNet等研討會講師,和微軟之友、RUN!PC雜誌專欄作者,著作有「IIS 5.0超級網站速成班」(新書)、「ASP網站熱門應用技術」、「微軟熱門Web技術速成班」等網站網頁設計十幾本電腦書籍。現任「喬篷科技」公司總經理,從事WebFlow、網站熱門應用精選等Web資料庫應用設計等服務。

IIS示範網站:www.asp.com.tw

連絡E-mail:jackchou@asp.com.tw。

 

本文介紹IIS 5.0與XML,包括ADO如何支援XML、ADO如何支援XML、IE 5.0如何支援XML等功能。

其中ADO如何支援XML單元,將介紹Recordset儲存成XML檔案、Recordset以XML格式輸出到瀏覽器、Recordset以XML格式儲存於記憶體、記憶體XML格式資料轉到Recordset,為本文精彩的部份。

XML(eXtensible Markup Language)支援

XML(eXtensible Markup Language)將成為資料交換的標準。

IIS 5.0於XML(eXtensible Markup Language)支援方面,包含:

1.      ADO支援XML,可以直接將recordset的資料,以XML格式儲存成一個XML檔案或輸出(Response)到瀏覽器;或將recordset的資料以XML格式儲存於記憶體中(使用STREAM物件)。

2.      XML Parser(XMLDOM)以解析XML檔案,可於IE(client)與 ASP(server)上使用。

3.      IE 5.0支援XML,包括IE 5.0 XML Data Islands和Databinding,以及XSL(eXtensible Stylesheet Language)Stylesheets。

 

ADO如何支援XML呢?
 

Windows 2000 Server之IIS 5.0包括ADO 2.5版,IIS 4.0可使用ADO 2.1版。

ADO 2.5對於XML新提供的功能:

1.      直接將recordset的資料,以XML格式輸出(Response)到瀏覽器,使用RS.Save Response, adPersistXML指令。

2.      新增加STREAM物件,於記憶體儲存XML格式的資料,將ADO之Recordset資料儲存成XML格式,暫時放置於記憶體當中,提供recordset與記憶體XML格式資料之間的交換功能。

ADO支援XML,可以直接將recordset的資料,以XML格式儲存成一個XML檔案或輸出(Response)到瀏覽器;或將recordset的資料以XML格式儲存於記憶體中(使用STREAM物件)。包括:

1.      Recordset儲存成XML檔案:ADO 2.1版,直接將recordset的資料,以XML格式儲存成一個XML檔案,使用RS.Save “xxx.xml", adPersistXML指令。

2.      Recordset以XML格式輸出到瀏覽器:ADO 2.5版,直接將recordset的資料,以XML格式輸出(Response)到瀏覽器,使用RS.Save Response, adPersistXML指令。

3.     Recordset以XML格式儲存於記憶體:ADO 2.5版,將recordset的資料以XML格式儲存於記憶體(使用STREAM物件)中,使用RS.Save ST, adPersistXML指令。

4.     記憶體XML格式資料轉到Recordset:ADO 2.5版,將儲存於記憶體(使用STREAM物件)中XML格式資料轉到recordset中,使用RS.Open ST指令。

STREAM物件

STREAM物件,用於儲存XML格式資料於記憶體中,可使用以下方法:

l    rs.Save st, adPersistXML:將recordset的資料以XML格式使用STREAM物件儲存於記憶體中。

l    Response.Write st.ReadText:將STREAM物件儲存於記憶體中之XML資料輸出(Response)到瀏覽器中。

l    st.Open:開啟STREAM物件。

l    st.WriteText objTextStream.ReadAll():將文字字串儲存於STREAM物件記憶體中。

l    st.Position = 0:將指標指到STREAM物件記憶體起點。

l    rs.Open st:將儲存於STREAM物件記憶體中XML格式資料轉到recordset中。

Recordset儲存成XML檔案

於IIS 4.0之ADO 2.1版(當然可用於IIS 5.0之ADO 2.5版),使用RS.Save “xxx.xml", adPersistXML指令,即可直接將recordset的資料,以XML格式儲存成一個XML檔案。

譬如asp程式碼如下:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("test.mdb")& ";Driver={Microsoft Access Driver(*.mdb)};"

set RS = Server.CreateObject( "ADODB.Recordset" )



RS.Open "select * from PRODUCT", conn1



RS.Save Server.MapPath("test1.xml"), 1 'adPersistXML



rs.close

conn1.close



Response.Redirect "test1.xml"

%>

將test.mdb中PRODUCT資料表的資料先開啟於recordset RS中,再使用RS.Save “test1.xml", adPersistXML指令,以XML格式儲存成一個XML檔案test1.xml,最後重新導向到此新產生的XML檔案。

於瀏覽器執行結果如下,顯示此新產生的XML檔案。

又譬如asp程式碼如下:

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("test.mdb")& ";Driver={Microsoft Access Driver(*.mdb)};"



set RS = Server.CreateObject( "ADODB.Recordset" )

RS.Open "select * from PRODUCT", conn1



strFilename = Server.MapPath("test1.xml")



RS.Save strFilename, 1 'adPersistXML



set objFS = Server.CreateObject("Scripting.FileSystemObject")

set objTextStream = objFS.OpenTextFile(strFilename, 1)



Response.Write objTextStream.ReadAll()

objTextStream.Close()

rs.close

conn1.close

%>

使用Scripting.FileSystemObject,讀取所新產生的XML檔案,於瀏覽器執行結果同上例。

Recordset以XML格式輸出到瀏覽器

於IIS 5.0之ADO 2.5版,使用RS.Save Response, adPersistXML指令,即可直接將recordset的資料,以XML格式輸出(Response)到瀏覽器。

譬如asp程式碼如下:

<%

Response.ContentType = "text/xml"

Response.Expires = 0

%>

<?xml version="1.0" encoding="BIG5" standalone="yes" ?> 

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("test.mdb")& ";Driver={Microsoft Access Driver(*.mdb)};"



set objRS = Server.CreateObject( "ADODB.Recordset" )

objRS.Open "select * from PRODUCT", conn1



if Request.ServerVariables("SERVER_SOFTWARE")= "Microsoft-IIS/5.0" then

objRS.Save Response, 1 'adPersistXML

else

dim objFS, strFilename, strTempFolder, objTextStream

set objFS = Server.CreateObject( "Scripting.FileSystemObject" )

strTempFolder = objFS.GetSpecialFolder( TemporaryFolder )+ "\"

strFilename = objFS.GetTempName()

objRS.Save strTempFolder + strFilename, 1 'adPersistXML

set objTextStream = objFS.OpenTextFile(strTempFolder + strFilename, 1)

Response.Write objTextStream.ReadAll()

objTextStream.Close()

objFS.DeleteFile strTempFolder + strFilename, False

end if

%>

將test.mdb中PRODUCT資料表的資料先開啟於recordset RS中,再使用RS.Save Response, adPersistXML指令,直接將recordset的資料,以XML格式輸出(Response)到瀏覽器。

其中使用Request.ServerVariables("SERVER_SOFTWARE")判斷是否使用IIS 5.0("Microsoft-IIS/5.0"),若是則使用RS.Save Response, adPersistXML指令;若不是,則使用objRS.Save “XXX.XML”, adPersistXML先儲存到暫時的XML檔案,再使用objTextStream.ReadAll()讀取XML檔案所有資料使用Response.Write顯示出來。

於瀏覽器執行xmlado3.asp結果如下,顯示輸出(Response)到瀏覽器之畫面。

Recordset以XML格式儲存於記憶體

於IIS 5.0之ADO 2.5版,使用RS.Save ST, adPersistXML指令,即可將recordset的資料以XML格式儲存於記憶體(使用STREAM物件)中。

譬如asp程式碼如下:

<%

Response.ContentType = "text/xml"

Response.Expires = 0

%>

<?xml version="1.0" encoding="BIG5" standalone="yes" ?> 

<%

Set conn1 = Server.CreateObject("ADODB.Connection")

conn1.Open "DBQ="& Server.MapPath("test.mdb")& ";Driver={Microsoft Access Driver(*.mdb)};"



set rs = Server.CreateObject( "ADODB.Recordset" )

rs.Open "select * from PRODUCT", conn1



' ADOToXML

set st = Server.CreateObject( "ADODB.Stream" )



rs.Save st, 1 'adPersistXML

Response.Write st.ReadText

%>

將test.mdb中PRODUCT資料表的資料先開啟於recordset RS中,再使用RS.Save ST, adPersistXML指令,即可將recordset的資料以XML格式儲存於記憶體(使用STREAM物件)中,使用st.ReadText讀取記憶體所有XML資料經過Response.Write顯示出來。

於瀏覽器執行結果如下,顯示此所有XML資料。

記憶體XML格式資料轉到Recordset

於IIS 5.0之ADO 2.5版,使用RS.Open ST指令,即可將儲存於記憶體(使用STREAM物件)中XML格式資料轉到recordset中。

譬如asp程式碼如下:

<%

set objFS = Server.CreateObject("Scripting.FileSystemObject")

xmlfile = Server.MapPath("test.xml")

set objTextStream = objFS.OpenTextFile(xmlfile, 1)



set rs = Server.CreateObject( "ADODB.Recordset" )

set st = Server.CreateObject( "ADODB.Stream" )



st.Open

st.WriteText objTextStream.ReadAll()

st.Position = 0

rs.Open st

%>

   <TABLE BORDER=1>

   <% Do While Not RS.EOF %>

   <TR>

   <% For i = 0 to RS.Fields.Count - 1 %>

      <TD BGCOLOR="f7efde" VALIGN=TOP><% = RS(i)%></TD>

   <% Next %>

   </TR>

   <%

RS.MoveNext

Loop

RS.Close

%>

   </TABLE>

首先使用Scripting.FileSystemObject讀取XML檔案,再使用st.WriteText objTextStream.ReadAll()儲存於記憶體(使用STREAM物件)中,又使用RS.Open ST指令,即可將儲存於記憶體(使用STREAM物件)中XML格式資料轉到recordset中,最後使用RS(i)於瀏覽器顯示出來。

於瀏覽器執行結果如下,顯示此XML檔案資料。

中文部份顯示成亂碼,請讀者試試是否可解決。
分享到:
评论

相关推荐

    ASP与XML高级编程(PDG)

    3. ASP与XML结合:探讨如何在ASP中创建和读取XML文件,以及如何使用ASP的XML对象模型处理XML数据。 4. 数据绑定和XML数据源:讲述如何将XML数据绑定到ASP控件,实现在网页上动态展示XML内容。 5. XSLT和XPath:介绍...

    《ASP与XML高级编程》源码

    《ASP与XML高级编程》源码 wrox出版社出版, 文件列表 Chapter 03 ..........\contacts.xml ..........\invalid_contacts.xml ..........\update_booklist.xml ..........\Verifire.asp Chapter 05 ............

    ASP与XML高级编程 pdf

    2. **XML语法与解析**:讲解XML的基本元素、属性、命名空间等概念,以及如何使用DOM(Document Object Model)、SAX(Simple API for XML)等解析器在ASP中解析XML文件。 3. **ASP与XML结合应用**:展示如何在ASP中...

    Asp与XML的关系

    XML与数据库之间的关系密切。在小规模数据应用中,XML可以直接作为轻量级数据库使用,尤其在需要快速读取和写入少量数据时,避免了大型数据库引擎的开销。同时,XML也可作为大型数据库如SQL Server、Oracle、MySQL、...

    asp与xml开发案例

    当ASP与XML结合时,可以构建出强大的Web应用程序,因为XML提供了数据的组织和传输,而ASP则负责处理这些数据并生成动态内容。 在“asp与xml开发案例”中,我们将会深入学习如何利用XML作为数据存储和传输的载体,...

    ASP与XML 高级编程

    ASP(Active Server Pages)与XML(eXtensible Markup Language)是两种在Web开发中广泛使用的技术。ASP是一种服务器端脚本环境,用于创建动态、交互式的网页,而XML则是一种数据交换和存储的标准,强调数据的结构化...

    ASP与XML网站实作大全

    《ASP与XML网站实作大全》是一本专为IT从业者和学习者编写的教程,旨在深入探讨如何结合ASP(Active Server Pages)技术和XML(Extensible Markup Language)来构建功能丰富的动态网站。本书全面覆盖了ASP编程基础、...

    asp与xml网站实作大全

    《ASP与XML网站实作大全》是一本深入探讨如何利用ASP(Active Server Pages)和XML(eXtensible Markup Language)技术构建高效、灵活且可扩展的网站的指南。本书全面覆盖了这两种技术的结合应用,旨在帮助读者掌握...

    ASP 与XML 高级编程(PDG)

    **ASP与XML高级编程**是IT领域中一个重要的主题,主要涵盖了XML(可扩展标记语言)的基础知识及其在ASP(Active Server Pages)环境中的高级应用。XML作为一种数据交换和存储的标准,广泛应用于Web服务、数据集成和...

    ASP与XML 高级编程(PDG)2

    ASP(Active Server Pages)与XML(eXtensible Markup Language)是Web开发中的两种核心技术,它们在构建动态、数据驱动的网站中起着至关重要的作用。ASP是一种服务器端脚本环境,它允许开发者使用诸如VBScript或...

    ASP与XML.高级编程.rar

    4. **ADO.NET与XML**:在ASP.NET中,ADO.NET提供了一套接口来处理XML数据,包括DataSet、XmlDataDocument等,它们可以方便地将XML数据与数据库数据进行交互。 5. **XML配置文件**:ASP应用可以使用XML作为配置文件...

    ASP 与XML 高级编程(PDG).rar

    《ASP与XML高级编程》是一本深度探讨XML与ASP结合使用的专业书籍,旨在帮助开发者掌握XML的核心概念和ASP的高级编程技巧。XML(eXtensible Markup Language)是一种用于标记数据的语言,它允许数据以结构化的方式...

    ASP与XML 高级编程(PDG)1

    ASP与XML 高级编程(PDG)1

    asp添加删除xml信息

    本篇文章将深入探讨如何在ASP中添加和删除XML信息,以及与之相关的知识点。 **1. ASP与XML的基础知识** - **ASP基础**: ASP文件是包含服务器端脚本的HTML页面,这些脚本在服务器上执行,然后将结果发送到客户端...

    利用asp连接xml添加修改删除

    总结一下,ASP与XML的结合使得开发者能够轻松地在服务器端处理和管理结构化的数据。通过学习和实践这些操作,你不仅可以提升Web开发技能,还能为构建更高效、灵活的Web应用程序打下坚实的基础。

    XML与ASP网站实作大全3(非常好)

    XML(eXtensible Markup Language)是一种用于标记数据的...通过深入学习"XML与ASP网站实作大全3",开发者能够掌握XML与ASP的协同工作,提升Web应用的开发能力和复杂性处理,从而创建更强大、更具交互性的互联网产品。

    Asp+xml 实现增删改查

    2. **ASP与XML交互**:在ASP中,我们使用MSXML库(Microsoft XML Library)提供的对象来处理XML,例如DOMDocument对象。DOM(Document Object Model)是一种树形结构,可以表示整个XML文档。通过DOM,我们可以使用...

    ASP操作XML数据.rar_asp+xml_操作XML

    当ASP与XML结合时,可以实现对XML文件的数据读取、写入和处理,从而提供更灵活的数据管理能力。 ASP操作XML数据的关键在于XMLDOM(XML Document Object Model)对象,它是ASP内建的,允许我们解析和操作XML文档。...

    学习Excel VBA与XML、ASP协同应用

    ### 知识点三:XML与ASP的协同应用 #### 3.1 XML(Extensible Markup Language) - **XML的作用**:用于存储和传输数据,是一种标记语言,可用于创建可扩展的标记语言文档。 - **XML文件结构**:由元素组成,每个...

    XML与ASP网站实作大全电子文档格式,有很好的参考价值

    综上所述,"XML与ASP网站实作大全"这一主题涵盖了从XML和ASP的基础知识,到它们在实际网站开发中的应用,包括数据处理、动态页面生成、数据交换和安全防护等多个方面。对于想要深入学习和掌握这两种技术的开发者来说...

Global site tag (gtag.js) - Google Analytics