分享

Flash处理外部XML文档数据-Flash教程(三)

 智慧能量 2011-11-22

ASP

ASP生成XML文档.常用的是利用ASP将数据库中的数据用XML文档格式显示.方便Flash调用或应用在其它方面.
ASP基础这里就不做说明了,不过会尽量让大家都明白(不明白的请提问).

说明:

因为是访问ASP,需要通过IIS,Flash默认是访问本地文件的.不能访问网络.所以要将访问本地改成访问网络.
在 文件-->发布设置-->Flash 选项卡的最下面的"本地回放安全性"选项中的"只访问本地文件"改成 "只访问网络",
下面发布的Flash,如没非凡说明,都按此设置.

实验5:

先做一个简单的实验.用ASP生成XML文档.
打开记事本,输入下面的代码,然后保存为 xml-005.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-005.asp
'设置文档类型
Response.ContentType="text/xml"
'输出XML文档,用一个Response.Write()就可以做到的.这样写便于大家理解.
Response.Write("<?xml version='1.0'?>")
Response.Write("<!--xml-005.asp-->")
Response.Write("<firstNode name='1'>")
Response.Write("<childNode name='1.1' />")
Response.Write("<childNode name='1.2' />")
Response.Write("<childNode name='1.3' />")
Response.Write("</firstNode>")
%>

打开IIS新建一个网站,别名xml,路径为刚才的asp文件的目录.
然后在IIS中浏览刚才的asp文件,看到的就是一个xml文档,不同的就是后缀名,写法.
那现在怎样在Flash中调用呢?
很简单.打开之前的 xml-001.fla 文件,
将加载xml的地址改成 xml-005.asp 文件的地址就行了.
例:

myxml.load("http://localhost/xml/xml-005.asp");

但这样还不行.还要加上个随机数,防止调用缓存.改成下面这样.

myxml.load("http://localhost/xml/xml-005.asp?ran=" Math.random(9999));

这个效果跟之前做的xml-001.fla效果是一样的.只是xml文档换成asp生成的了.

实验6:

这个实验跟上面的差不多.但数据是从数据库中调出来的.这样做就能很方便的更新数据了.

数据库:

打开Access数据库,新建一个空白数据库,命名为 Data.mdb,保存到之前asp文件的目录中.
再点 使用设计器创建表,新建二个表,表名分别为:
--------------------------------------------------
first
child
--------------------------------------------------

first表中:
输入二个字段,分别为:
--------------------------------------------------
firstID 自动编号
name 文本
--------------------------------------------------
在 firstID 字段点右键-->主键,保存,
打开first表.在name字段输入一条数据,数据为:
--------------------------------------------------
1
--------------------------------------------------
保存.

child表中:
输入二个字段,分别为:
--------------------------------------------------
childID 自动编号
name 文本
--------------------------------------------------
在 childID 字段点右键-->主键,保存.
打开child表.在name字段输入三条数据,数据分别为: 
--------------------------------------------------
1.1
1.2
1.3
--------------------------------------------------
保存.关闭数据库.

数据库到这可以了.下面是ASP:
打开记事本,输入下面的代码,然后保存为 xml-006.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-006.asp
dim conn,rs,sqlcom
'设置文档类型
Response.ContentType="text/xml"
Response.Write("<?xml version='1.0'?>")
Response.Write("<!--xml-006.asp-->")
'创建连接对象
Set conn=Server.CreateObject("Adodb.Connection")
'这里用字符串方法连接数据库.
'"Provider=Microsoft.Jet.OLEDB.4.0; 这个是数据库驱动.
'Data Source="Server.MapPath("Data.mdb") 数据库文件的相对路径.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb")
'创建记录集对象.
Set rs=Server.CreateObject("Adodb.RecordSet")
'查询数据库的sql语句.因为 first 是SQL中的要害字,所以要用中括号括起来.
sqlcom="select * from [first]"
'执行sql语句.
'1,1 只读.
'1,3 可读可写.
rs.Open sqlcom,conn,1,1
'假如记录集中有数据.
if not rs.eof then
'输出XML节点,rs("name")是first表中字段name的数据.
Response.Write("<firstNode name='"&rs("name")&"'>")
end if
'关闭记录集
rs.Close
'查询数据库的sql语句.
sqlcom="select * from child"
'执行sql语句.
rs.Open sqlcom,conn,1,1
'用for语句将数据库中的数据循环出来.
for k=1 to rs.RecordCount
'输出XML节点,rs("name")是child表中字段name的数据.
Response.Write("<childNode name='"&rs("name")&"' />")
'移到下一条数据
rs.MoveNext
Next
'结束firstNode节点
Response.Write("</firstNode>")
'关闭记录集
rs.Close
'释放记录信对象
Set rs=nothing
'关闭连接
conn.Close
'释放连接对象
Set conn=nothing
%>

然后在IIS中浏览xml-006.asp文件,会跟实验5的asp输出xml文档一样的.
在Flash中还是跟实验5一样调用.

实验7:

重新做实验3,不过XML文档数据从数据库中调用.
用户登录不推荐使用XML.推荐在ASP或其它语言中,做隐式判定.
了解:
ASP请点:
JSP请点:

这个还是要讲的.便于理解下一个实验.

数据库:

打开Data.mdb数据库.新建二个表.
表名分别为: 
--------------------------------------------------
post
user
--------------------------------------------------

post表中:
输入二个字段:分别为: 
--------------------------------------------------
postID 自动编号
postName 文本
--------------------------------------------------
在 postID 字段点右键-->主键,保存.
打开post表,在postName字段输入二条数据,数据分别为: 
--------------------------------------------------
经理
职员
--------------------------------------------------
保存.

user表中:
输入四个字段,分别为: 
--------------------------------------------------
userID 自动编号
username 文本 
password 文本
postName 文本
--------------------------------------------------
在 userID 字段点右键-->主键,保存.
打开user表,分别在username,password,postName字段输入四条数据,数据分别为: 
--------------------------------------------------
username password postName
MChooseFlash01 MChooseHappiness 经理
MChooseFlash02 MChooseHappiness 经理
EChooseFlash01 EChooseHappiness 职员
EChooseFlash02 EChooseHappiness 职员
--------------------------------------------------
保存.关闭数据库.

数据库到这可以了.下面是ASP:

打开记事本,输入下面的代码,然后保存为 xml-007.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-007.asp
dim conn,rs,sqlcom,post_arr
'设置文档类型.
Response.ContentType="text/xml"
'输出XML文档.
Response.Write("<?xml version='1.0' encoding='gb2312'?>")
Response.Write("<!--xml-007.asp-->")
Response.Write("<UserDataList>")
'创建连接对象.
Set conn=Server.CreateObject("Adodb.Connection")
'这里用字符串方法连接数据库.
'"Provider=Microsoft.Jet.OLEDB.4.0; 这个是数据库驱动.
'Data Source="Server.MapPath("Data.mdb") 数据库文件的相对路径.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb")
'创建记录集对象.
Set rs=Server.CreateObject("Adodb.RecordSet")
'查询数据库的sql语句.
sqlcom="select * from post"
'执行sql语句.
'1,1 只读.
'1,3 可读可写.
rs.Open sqlcom,conn,1,1
'重定义数组.
'rs.RecordCount 记录集中总的记录数.
Redim post_arr(rs.RecordCount)
'用for语句将post表中的数据循环出来.
'Ubound数组的最大上标.
for i=1 to Ubound(post_arr)
'将post表中的postName字段中的值存入数组post_arr.
post_arr(i)=rs("postName")
'移到下一条数据.
rs.MoveNext
Next
'这里用了嵌套for语句,
'第一个for j是将post_arr数组中的数据读出来.也就是post表中的数据.
'第二个for k是将user表中的数据读出来.
'用for语句将post_arr数组中的数据循环出来.
for j=1 to Ubound(post_arr)
'关闭记录集.
rs.Close
'查询数据库的sql语句.
'根据post_arr(j)数组中的值为条件来重复执行sql语句.
'user是SQL中的要害字.要用中括号括起来.
sqlcom="select * from [user] where post='"&post_arr(j)&"'"
'执行sql语句.
rs.Open sqlcom,conn,1,1
'输出XML节点.
Response.Write("<Post post='"&post_arr(j)&"'>")
'用for语句将user表中的数据循环出来.
for k=1 to rs.RecordCount
'输出XML节点.
Response.Write("<UserData username='"&rs("username")&"' password='"&rs("password")&"' />")
'移到下一条数据.
rs.MoveNext
Next
'结束Post节点.
Response.Write("</Post>")
Next
'结束UserDataList节点.
Response.Write("</UserDataList>")
'释放记录信对象.
Set rs=nothing
'关闭连接.
conn.Close
'释放连接对象.
Set conn=nothing
%>

在IIS中浏览xml-007.asp文件.跟实验3中的xml文档大致一样.
打开实验3中的Flash文件,把Flash中的加载xml地址换成:

myxml.load("http://localhost/xml/xml-007.asp?ran=" Math.random(9999));

然后测试影片.效果跟实验3一样.

实验8:

怎么都讲些不实用的东西啊?别急.下面就开始讲实用的.
这个实验比较有实用价值.就如蓝色网站的侧边菜单来说.
如图:

Flash处理外部XML文档数据

放置的内容是有限的.这个实验就可以用来扩展侧边菜单.
利用Accordion组件做容纳多内容的网站侧边菜单.
效果图:

Flash处理外部XML文档数据

下面开始:

数据库:

打开Data.mdb数据库.新建二个表.
表名分别为: 
--------------------------------------------------
column
columnData
--------------------------------------------------

column表中:
输入三个字段:分别为: 
--------------------------------------------------
columnID 自动编号
columnName 文本
columnIndex 数字
--------------------------------------------------
在 columnID 字段点右键-->主键,保存.
打开column表,分别在columnName,columnIndex字段输入五条数据,数据分别为: 
--------------------------------------------------
columnName columnIndex
专题栏目-01 0
专题栏目-02 1
专题栏目-03 2
专题栏目-04 3
专题栏目-05 4

--------------------------------------------------
保存.

columnData表中:
输入四个字段,分别为: 
--------------------------------------------------
cdID 自动编号
cdName 文本 
cdURL 文本
columnIndex 数字
--------------------------------------------------
在 cdID 字段点右键-->主键,保存.
打开columnData表,分别在cdName,cdURL,columnIndex字段输入下面的数据: 
--------------------------------------------------
cdName cdURL columnIndex
ChooseFlash-01.1 http://www. 0
ChooseFlash-01.2 http://www. 0
ChooseFlash-01.3 http://www. 0
ChooseFlash-01.4 http://www. 0
ChooseFlash-01.5 http://www. 0

ChooseFlash-02.1 http://www. 1
ChooseFlash-02.2 http://www. 1
ChooseFlash-02.3 http://www. 1
ChooseFlash-02.4 http://www. 1
ChooseFlash-02.5 http://www. 1

ChooseFlash-03.1 http://www. 2
ChooseFlash-03.2 http://www. 2
ChooseFlash-03.3 http://www. 2
ChooseFlash-03.4 http://www. 2
ChooseFlash-03.5 http://www. 2

ChooseFlash-04.1 http://www. 3
ChooseFlash-04.2 http://www. 3
ChooseFlash-04.3 http://www. 3
ChooseFlash-04.4 http://www. 3
ChooseFlash-04.5 http://www. 3

ChooseFlash-05.1 http://www. 4
ChooseFlash-05.2 http://www. 4
ChooseFlash-05.3 http://www. 4
ChooseFlash-05.4 http://www. 4
ChooseFlash-05.5 http://www. 4
ChooseFlash-05.6 http://www. 4
ChooseFlash-05.7 http://www. 4

--------------------------------------------------
保存.关闭数据库.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多