当前位置: 主页->网页制作->HTML->正文
相关文章
◇解析IE地址栏中的 about
◇在html调用别的网页的代码
◇不用询问关闭独立窗口代码
◇两个表格可以左右排放吗
◇被遗忘的HTML元素
◇“画中画”效果—谈Iframe
◇垂直滚动信息板
◇制作带链接的滚动公告栏
◇动态HTML技术精彩实例
◇网页设计中常犯五个错误
◇在线编辑器的调用使用方法
◇用ie关机或重起
◇文字布局(TEXT STYLE)标记
◇用HTML编写应用程序
◇HTML技巧集
◇HTML中的框架
◇HTML文件HEAD内部标记浅析
◇网页中制作线条的技巧
◇HTML技巧100例
◇我们为什么要用XML
◇轻松设置网页水平线颜色
◇HTML 3.2 编程指南

我们为什么要用XML

http://www.yy0736.com 加入日期:2004.11.03 点击数:

查看:[大字体 中字体 小字体]

别的我就不多说了,国人和老外在这方面的差距已经不是一点半点。希望我写的这些东西能稍微的给大家带动一点点气氛,否则这几个小时我可就真的是在练打字了 : D

由于本人技术还停留在普通小鸟等级,所以不可避免要出现一些错误。那大家就要包涵了,写这个东东旨在抛砖引玉,让大家一起参加进来,所以大家有什么不同观点就尽管提出来,不要给我面子。好,废话说完了,正题。

(概述部分)

Flash Web一般是利用 Flash Action Script 以及自描述语言(如XML)结合后台语言(如ASP、ASP.net、PHP、JSP)做一些在 HTML 页面都能做到的工作。比如数据查询、管理,数据库记录的增、删、改,以及一些权限的标记等等。

如果你常去一些国外站点参观的话,一定会发现很多功能丰富的Flash整站:比较出名的有耐克中国(http://www.nike.com.cn),以及之前在闪吧 Cool Site 区的终结者3的官方网站等等。如果仔细的观察一下,可以发现有很多都是ASP/ASP.net+Flash+XML这种架构的。这种架构的优点在于信息和数据的集成化和易处理化。有过手写HTML经验的朋友知道,在HTML中数据和形式是结合在一起的,单看代码很不好把这个网页中的纯数据分离开来。而未来的Web趋势就是跨平台,跨平台就是数据可以在不同的平台里共享。就比如:我在Windows OS的电脑前,通过表单把一份提交到了一个站点进行保存,而这个站点又能把这些纯数据完好无损的交给我的WAP手机,甚至通过一些途径,你家的冰箱都能接受并且“理解”你的数据(当然你的冰箱得上网:目)。仔细想想这是多么令人激动的事情!!!

XML的出现使这一切变的更加容易,因为XML是一种自描述语言。单纯看代码,它的可读性要比传统的HTML好读的多。就像以前曾经看的一本书上讲到的:在22世纪,如果考古人员找到我们现在的一张磁片。放入“电脑”中,如果显示在屏幕上的是“<html><title>闪吧论坛</title><body><table…… ”他可能很难理解这是一个什么东东,甚至这个table究竟是“表格”还是“桌子”也未必能判断的了。而我们如果这样写:

<?xml version=''1.0'' encoding=''GB2312''?>
<论坛 名称=''闪吧论坛''>
<论坛地址>http://www.flash8.net/index.asp<;/论坛地址>
<论坛介绍>一个气氛非常和谐的Flash技术论坛</论坛介绍>
</论坛>

相信只要稍微懂一点语言学的人都知道是个什么意思。那假想一下,一个从来没有接触到我们文化的“考古人员”都能理解的话,那么让我们这个时代的冰箱理解你在网上提交的数据也不是什么奇怪的事情了。:D

现在再说说Flash Web中swf怎么接收和判断。

Flash也可以读取一些简单的数据,比较典型的有:文本文件内容(.txt),asp返回值(.asp)等……
Macromedia自从Flash 5.0之后又顺应W3C大趋势,加上了XML解析功能。至此可以说:Flash真正走上了Web的道路。

Flash 读取txt和asp文件的格式一般为
&variables1=content1&variable2=content2&……的形式

也就是文本文件或者ASP返回值当是上面这种格式的时候,Flash就认定“变量1=‘变量1的值’、变量2=‘变量2的值’、……”,而这个时候你就可以在Flash中调用和使用这些变量的值了。

Flash中读取文本文件比较常见的方法有loadVariables、loadVars

loadVariables方法在Macromedia的帮助文件如是说:

可用性
Flash Player 4。

用法
loadVariables ("url" ,level/"target" [, variables])

参数
url 变量所处位置的绝对或相对URL。如果使用Web浏览器访问影片,则此 URL 的宿主必须与影片本身在同一子域中。

level指定Flash Player中接收这些变量的级别的整数。当将变量加载到级别时,在标准模式下,“动作”面板中的该动作变成 loadVariablesNum;在专家模式下,您必须指定loadVariablesNum 或从“动作”工具箱中选择它。

target 指向接收所加载变量的影片剪辑的目标路径。您只能指定target影片剪辑或Flash Player中的level(级别)这两者之一;而不能同时指定这两者。

variables 一个可选参数,指定发送变量所使用的HTTP方法。该参数必须是字符串GET或POST。如果没有要发送的变量,则省略此参数。GET方法将变量追加到 URL 的末尾,该方法用于发送少量变量。POST方法在单独的HTTP标头中发送变量,该方法用于发送长的变量字符串。

返回
无。

说明
动作;从外部文件(例如文本文件,或由CGI脚本、Active Server Page(ASP)、PHP或Perl脚本生成的文本)读取数据,并设置Flash Player 级别或目标影片剪辑中变量的值。此动作还可用于使用新值更新活动影片中的变量。

在指定URL处的文本必须为标准的MIME格式 application/x-www-form-urlencoded(一种CGI 脚本使用的标准格式)。要加载的影片和变量必须驻留在同一子域中。可以指定任意数量的变量。例如,下面的语句定义了几个变量:

company=Macromedia&address=600+Townsend&city=San+Francisco&zip
=94103
将要在Flash Player实例中打开的第一个影片加载到最下一级(在代码中标识为 _level0)。当使用loadMovie 或loadMovieNum动作将后面的影片加载到Flash Player中时,必须指定一个 Flash Player 中的级别号,或者指定一个目标影片剪辑(每个影片都将加载到该级别或目标影片剪辑中)。当使用 loadVariables 动作时,必须指定变量将加载到的 Flash Player 级别或影片剪辑目标。

示例

此示例将来自文本文件的信息加载到主时间轴上 varTarget 影片剪辑的文本字段中。文本字段的变量名必须与 data.txt 文件中的变量名匹配。

on(release)

而loadVars在Macromedia的帮助文档里是这样说的:

LoadVars(对象)
LoadVars 对象是 loadVariables 动作的替代方法,用于在 Flash 影片和服务器之间传输变量。

可使用 LoadVars 对象在下载时获取错误信息、进度指示和流数据。LoadVars 对象的工作原理非常类似于 XML 对象;它使用方法 load、send 和 sendAndLoad 与服务器进行通讯。LoadVars 对象和 XML 对象的主要差别在于 LoadVars 传输动作脚本的名称和值对,而不是 XML 对象中存储的 XML DOM 树。

LoadVars 对象与 XML 对象遵循相同的安全限制。

您必须使用构造函数 new LoadVars() 创建 LoadVars 对象的实例后,才可调用其方法。

Flash Player 6 和更高版本支持 LoadVars 对象。


LoadVars 对象的方法摘要

方法
说明
LoadVars.load
从指定的 URL 下载变量。

LoadVars.getBytesTotal
返回通过 load 或 sendAndLoad 方法加载的字节数。

LoadVars.getBytesTotal
返回将通过 load 或 sendAndLoad 方法下载的总字节数。

LoadVars.send
将变量从 LoadVars 对象发布到 URL。

LoadVars.sendAndLoad
将变量从 LoadVars 对象发布到 URL,并将服务器的响应下载到目标对象。

LoadVars.toString
返回包含 LoadVars 对象中所有可枚举变量的 URL 编码字符串。

LoadVars对象的属性摘要

Key 对象的所有属性都是常量。

属性说明

LoadVars.contentType
指示数据的 MIME 类型。

LoadVars.load
一个布尔值,指示是否已完成 load 或 sendAndLoad 操作。

LoadVars 对象的事件摘要

方法
说明

LoadVars.onLoad

当完成 load 或 sendAndLoad 操作时调用。

LoadVars 对象的构造函数

可用性
Flash Player 6。

用法
new LoadVars()

参数
无。

返回
无。

说明
构造函数;创建 LoadVars 对象的实例。然后您可使用该 LoadVars 对象的方法来发送和加载数据。

示例
下面的示例创建名为 myLoadVars 的 LoadVars 对象实例:

myLoadVars = new LoadVars();

可见loadVars是一种功能更为丰富的方法,loadVar把被读取的资料当作一个对象来看,对象就有起方法和属性,可操纵性也就更好,同时loadVars方法已经拥有了和XML对象一样的sendAndLoad方法、这是一个异常强大的方法,通过这个方法,我们可以向服务器提交我们所需要的资料,同时接收服务器返回的响应,而他们之间的响应过程是独立的。也就是一个客户端向服务器端提出了一些请求(就好象我们在论坛里要求浏览相应页面,或者提交发言),服务器作出相应的处理后,只把结果发送到这个请求的端点,其他用户无法访问这个结果,因此这个过程是安全的。而不像静态文本的读取,只要知道这个文本的URL,任何人都可以访问并且获知其内容。而且应用了LoadVars/XML.sendAndLoad方法不用再创建单独的发送和接收进程。无论从方便、安全性、或者速度方面基本都是优于其他方法的,个人认为。

从数据的规范性和可读性上来说,在Flash中应用XML来代替文本或ASP返回的文本是完全合适的。或者我们可以用更加科学的方法,利用ASP/ASPX/PHP/JSP来动态生成XML页面。

关于Flash 支持XML对象的方法和属性,Macromedia公司如是说:

XML(对象)
使用 XML 对象的方法与属性加载、分析、发送、生成与操作 XML 文档树。在 Flash MX 中,XML 对象已成为程序本身的对象。这样,可以极大地提高性能。

必须使用构造函数 new XML() 创建 XML 对象的实例之后,才能调用 XML 对象的任何方法。

Flash Player 5 与 Flash Player 6支持XML。
XML 对象的方法摘要

方法
说明
XML.appendChild
在指定对象的子级列表结尾追加一个节点。

XML.cloneNode
克隆指定的节点,并可选择递归克隆所有子级。

XML.createElement
创建一个新的 XML 元素。

XML.createTextNode
创建一个新的 XML 文本节点。

XML.getBytesLoaded
返回为指定 XML 文档加载的字节数。

XML.getBytesTotal
以字节为单位返回 XML 文档的大小。

XML.hasChildNodes
如果指定的节点有子节点,则返回 true;否则,返回 false。

XML.insertBefore
在指定节点的子级列表中的一个现有节点之前插入节点。

XML.load
从 URL 中加载文档(由 XML 对象指定)。

XML.parseXML
将 XML 文档分析为指定的 XML 对象树。

XML.removeNode
从指定节点的父级中将该节点删除。

XML.send
将指定的 XML 对象发送到 URL。

XML.sendAndLoad
将指定的 XML 对象发送到 URL,并将服务器响应加载到另一 XML 对象中。

XML.toString
将指定的节点与其任何子级转换为 XML 文本。

XML 对象的属性摘要

属性
说明

XML.contentType
表示传输到服务器的 MIME 类型。

XML.docTypeDecl
设置并返回关于 XML 文档的 DOCTYPE 声明的信息。

XML.firstChild
引用指定节点列表中的第一个子级。

XML.ignoreWhite
当设置为 true 时,在分析过程中,将放弃仅包含空白的文本节点。

XML.lastChild
引用指定节点列表中的最后一个子级。

XML.load
检查指定的 XML 对象是否已加载。

XML.nextSibling
引用父节点的子级列表中的下一个同级。

XML.nodeName
返回 XML 元素的标签名。

XML.nodeType
返回指定节点的类型(XML 元素或文本节点)。

XML.nodeValue
如果指定节点为文本节点,则返回该节点的文本。

XML.parentNode
引用指定节点的父节点。

XML.previousSibling
引用父节点的子级列表中的前一个同级。

XML.status
返回一个指示 XML 文档分析操作成功或失败的数字状态代码。

XML.xmlDecl
设置并返回关于 XML 文档的文档声明的信息。

XML 对象的集合摘要

方法
说明

XML.attributes
返回一个包含指定节点所有属性的关联数组。

XML.childNodes
返回一个包含对指定节点的子节点的引用的数组。

XML 对象的事件处理函数摘要

方法
说明

XML.onData
一个回调函数,当 XML 文本从服务器上被完全下载时,或者当从服务器上下载 XML 文本的过程中出现错误时进行调用。

XML.onLoad
用于 load 与 sendAndLoad 的回调函数。

XML 对象的构造函数

可用性
Flash Player 5。

用法
new XML([source])

参数
source 为创建新的 XML 对象而进行分析的 XML 文本。

返回
无。

说明
构造函数;创建一个新的 XML 对象。必须使用构造函数方法创建一个 XML 对象的实例之后,才能调用任何一个 XML 对象的方法。

注意:createElement 与 createTextNode 方法是用于在 XML 文档树中创建元素和文本节点的“构造函数”方法。

示例
用法 1:下面的示例创建一个新的空 XML 对象。

myXML = new XML();
用法 2:下面的示例通过分析 source 参数中指定的 XML 文本创建一个 XML 对象,并使用结果 XML 文档树填充新创建的 XML 对象。
anyOtherXML = new XML("<state>California<city>
san francisco</city>

可见XML DOM一旦成功读入Flash中,就可以用很多方法控制它了。虽然说我们可以自己定义方法来控制文本数据,但是我想自己定义的一些方法除了比较自由之外应该无论从代码的严谨性和速度方面都是远远不敌内置方法的。所以说这些XML对象的方法真的是非常的体贴。

Flash中具体接收XML数据的一般方法也和上面的例子同理

首先用new方法构造一个XML对象

myXML=new XML();

然后对myXML对象做一些具体的设置,比如

myXML.ignoreWhite=true;//分析时将放弃仅包含空白的文本节点

之后按照自己的XML方法属性以及用途来读取XML 文件。常见的几种是:

myXML.load("myxml.xml");//读取一个固定的文本xml
myXML.onLoad=function(success)else
}
出于个人习惯问题,通常我还喜欢在前面加上
System.useCodePage=true;
Stage.showMenu=false;

这是一个最简单的XML读取过程。

稍微复杂一点的,我们可以动态的ASP语言来返回,下面我将举一个我以前制作的ASP+Flash+XML的小作品作为实例。这个小作品也将给大家提供下载源代码进行研究。(这个模型的研究要强烈的感谢ZAS的支持!,在此鸣谢!)

先看看源文件的XML初始化情况,以下是部分代码,我将对其中比较重要的几个部分来说说怎么读取动态的XML文件,里面涉及到一些XML对象的基本方法和属性,大家可以练习一下。遇到一些方法属性的时候我就不再声明了,请参照Macromedia的帮助文件。

myXML = new XML();//构造XML对象
System.useCodePage = true;//支持中文码制
myXML.load("http://127.0.0.1/xml/showit.asp?page="''
target="_blank" >http://127.0.0.1/xml/showit.asp?page=
";+page+"&temp="+Math.floor(Math.random()*1234567890));
/*-------------------------------------
这里是一个小小的诀窍:myXML.load("一个动态的地址")。这样可以防止读取缓存。众所周知如果这次我们请求的地址和上次相同的话,浏览器就会检查缓存,为了防止这种现象我们把地址的后面加上一个随机数page=+page+"&temp+Math.floor(Math.random()*1234567890))";
Math.random()函数将产生一个大于0小于1的随机数,这个随机数*1234567890,之后再用Math.floor() 函数取其下限值,这样我们每次访问的地址重复的可能性基本是微乎其微的缓存的问题就解决了,就比如

第一次访问的地址:
http://127.0.0.1/xml/showit.asp?page=1&temp=334526384

而第二次访问的地址就是:

http://127.0.0.1/xml/showit.asp?page=1&temp=664636251
请求的都是显示第一页,而浏览器不会调用缓存。
----------------------------------------*/
myXML.onLoad = checkLoad; //当MyXML.onLoad事件被触发的时候,则执行checkLoad事件
function checkLoad(success)
function readata()
}
    j++;
}
}
    i++;
}
}
}

/*----------------------------------

今天我就暂时先说到这里,如果大家喜欢的话,以后我们再继续讨论一些深些的理论以及XML+Flash的具体应用,都是很多令人激动的应用!

同时为了让不熟悉的朋友入门,我找了一个很好的实例来给大家下载,现在已经打了包。

目录也给大家做好了:

001.定义XML对象

002.增减节点_元素

003.节点属性

004.父_子节点

005.声明

006.节点的子元件

007.传送XML文件

008. 节点名称_内容_类型

009.数据解析

010文件大小

011 事件响应

作者:卢巧音中文网 出处:闪吧

[夜鹰论坛] [我要留言] [关闭窗口] [ ][TOP]