实现vlan间通信的方法【Flash与XML通信方法及其实现】
时间:2018-12-23 19:47:49 来源:雅意学习网 本文已影响 人
摘要:本文阐述了如何利用Flash访问XML文档,实现XML文档中每个元素和节点在Flash中的准确调用和显示。 关键词:Flash XML 对象 节点
引言
随着计算机网络技术的发展的日新月异,Flash作为网络上的优秀软件和语言,有着其他软件无法比拟的优越性,而XML目前正在成为各种数据特别是文档的首选格式,使用它,就可以以容易且一致的方式格式化和传送数据。因此,对两者之间交互和互通的探索及利用尤为重要。
1. Flash和可扩展标记语言 XML
Flash作为矢量化的Web交互式动画制作工具,在Web上发布交互式动画,目前正被大量地应用于动画、游戏、用户界面、Internet应用程序等等的制作之中。
可扩展标记语言(XML,Extensible Markup Language)是一门新兴的面向Internet应用的标记语言。XML经常被运用在Web服务中,比如网站的建设中。另外,它可以用于制作应用程序之间的数据交换以及配置系统等等,使用XML配置文件的系统应用程序能够方便地处理所需数据,不用像其他应用那样要经过重新编译才能修改和维护系统。
很多人已经意识到将数据发布为XML有很多优势,由此也推动了XML数据源的大量应用。人们正在或者已经将业务文档、数据库和业务间的通讯等信息源转换为使用XML作为表示格式。
2.运用Flash访问XML文档
2.1访问途径
ActionScript中的XML对象提供了访问XML文档的途径,使用点语法和XML对象的属性可以方便地访问XML文档(既可以是存储XML数据的文本文档,也可以是XML格式的文档)中的具体数据,并可以在Flash中将外部XML文档中的数据显示出来。
2.2 XML文档实例
下面是一个XML的例子:
<teacher>
<Tnumber>201</Tnumber>
<Tname>Tommy</Tname>
<Sex>male</Sex>
<courses>
<Bcourses>Mathematics</Bcourses>
<Pcourses>CAD</Pcourses>
</courses>
<Positions>Lecturers</Positions>
</teacher >
上例的XML文档定义了一个teacher对象,在teacher对象下面包含5组信息,分别是Tnumber、Tname、Sex、courses和Positions,在courses下面又分为Bcourses、Pcourses这2类。该数据结构如图1所示。
2.3 XML对象和类
XML对象提供了众多的属性、方法和事件,在Flash中调用XML文档需要用到XML类和XMLNode类中的一些方法和属性。下面我把用到的方法和属性列出来并在下文中予以详细解释:
XML.load(″xml文档的地址″);//加载指定的xml文档
XML.onLoad=function(success:Boolean){};//成功加载了xml文档时调用 XML.childNodes;//返回指定xml文档对象的子级的数组
XMLNode.ignoreWhite;//处理xml文档中的空白,设为true时,忽略空白,默认值为false
XMLNode.nodeValue;//返回XML对象的节点值
XMLNode.nodeType;//返回节点或节点文本的属性
XMLNode.nodeName;//返回XML对象的节点名称
2.3.1 load方法
XML的load方法用于从指定的URL中加载XML文档,并使用下载的XML数据替换指定XML对象的内容。使用load方法加载的XML文档须与Flash影片处于相同的文件夹中。如下为AS创建并从外部文本文档中加载XML对象:myXML=new XML();
myXML.load(″XMLData.txt″);
如下所示的AS创建并从外部XML文档中加载XML对象:myXML=new XML();
myXML.load(″XMLData.xml″);
使用XML.load命令后并不能立即将外部文档中的数据加载到影片中,如果直接引用文档中的数据可能会得不到需要的结果。要判断XML文档是否已经加载到影片中,可以使用onLoad事件。
2.3.2 onLoad事件
当从服务器上接收XML文档时,由Flash Player调用XML的onLoad事件。调用onLoad时自动返回一个参数success,如果成功地收到XML文档,则success参数为true;如果未收到该文档,或从服务器上接收响应时出现错误,则success参数为false。
onLoad事件的使用如下:
myXML = new XML();
myXML.load(″XMLData.txt″);
myXML.onLoad = function() {
if (success == true) {
trace(″XML is successfully loaded″);
} else {
trace(″Something is wrong with the XML document″);
}};
2.3.3 childNodes属性
XML的childNodes属性返回指定XML对象的子级的数组,数组中的每个元素都是对表示子节点的XML对象的引用,也就是说childNodes属性将XML对象当前级的子级节点作为一个数据返回。与数据一样,使用方括号可以访问数据的每一个元素。
先将外部文档XML对象其加载到影片中的XML对象中,运行以下脚本,输出窗口中将显示整个XML对象:
myXML = new XML();
myXML.load(″XMLData.xml″);
myXML.onLoad = function(success) {
if (success == true) {
trace(myXML.childNodes[0]);
}};
将上面的trace语句换成如下:trace(myXML.childNodes.[0]childNodes[0]);运行脚本,但是输出窗口中并没有显示。其实不是没有显示,而是因为<teacher>后面有一个换行,Flash不能识别换行,而是将空行也作为XML对象的一个节点了。可以运行以下脚本:trace(myXML.childNodes.childNodes[1]);输出窗口中显示:<Tnumber> 201 </Tnumber>。如果Flash Player不能识别空格和空行,我们就要使用ignoreWhite属性来处理空白节点。
2.3.4 ignoreWhite属性
ignoreWhite属性的默认设置为false,当设置为true时,在分析过程中将放弃仅包含空白的文本节点。要解决前面遇到的问题,要将XML对象的ignoreWhite属性设置为true。在上例中使用如下的AS将在输出窗口中返回<Tnumber> 201 </ Tnumber>:
myXML = new XML();
myXML.load(″XMLData.xml″);
myXML.ignoreWhite = true;
myXML.onLoad = function(success) {
if (success == true) {
trace(myXML.childNodes.childNodes[0]);
}};
如果要返回 CAD ,就需要如下的AS:trace(myXML.childNodes[0].childNodes[3].childNodes[1]);如果要返回节点中的文本字段,就需要使用nodeValue属性。
2.3.5 nodeValue属性
nodeValue属性返回XML对象的节点值。如果XML对象为文本节点,则nodeValue为该节点的文本;如果该XML对象是XML元素,则其nodeValue为null。要得到文本CAD,可以使用如下的AS:trace(myXML.childNodes[0].childNodes[3].childNodes[1].childNodes[0].nodeValue)。
2.3.6 nodeType属性
nodeType是一个只读属性,值为1表示XML元素,为3表示文本节点。
trace(myXML.childNodes[0].childNodes[3].childNodes[1].nodeType);//返回1;
trace(myXML.childNodes[0].childNodes[3].childNodes[1].childNodes[0].nodeType);
//返回3。
2.3.7 nodeName属性
nodeName属性返回XML对象的节点名称,如果该XML对象是一个XML元素(nodeType==1),则nodeName是表示XML文件中节点的标签名称;如果该XML对象为文本节点(nodeType==3),则nodeName为null。
trace(myXML.childNodes[0].childNodes[3].childNodes[1].nodeName);
//返回Pcourses;
trace(myXML.childNodes[0].childNodes[3].childNodes[1].childNodes[0].nodeName);
//返回null。
结束语
使用XML表示的数据结构和文档一目了然,在Flash中使用XML对象可以方便地解析XML的数据结构,以访问需要的节点或数据。XML可以使用简单的文本编辑器进行编辑,程序员可以很容易地编写出访问XML格式数据的程序。这也为使用Flash制作与服务器交互的影片提供了一条捷径。
参考文献:
[1][美]Fabio Arciniegas著.天宏工作室译.XML开发指南.清华大学出版社,2003年1月.
[2]刘云生,卢正鼎,卢炎生著.数据库系统概论.华中理工大学出版社,1998年4月.
[3]要步轩,梁子等编著.Flash MX完全使用教程.电子工业出版社,2003年1月.