`

关于XML在FLASH中的应用

 
阅读更多

关于XMLFLASH中的应用,以前写过几篇。也收集了几篇来自网络的。不过,都是一些非常简单而常用的。在这里,我把XML的其他相关说明总结一下。有不足之处,希望大家能相互补充。只为了一个共同的目的:共同提高。

一、书写标准的XML需要注意以下几点:
1
、一个标准的XML文档必须要在第一行以"<?xml>"开头,以及一个"<?/>"结尾,其中开头部分需申明XML的版本,如:version="1.0",也应包含一个关于编码的声明:“encoding="utf-8"”
2
XML要求所有的标签必须在文档结束之前被闭合,如果标签中包含内容,则必须写成“<标签名>内容</标签名>"的格式,如果内容为空,则应写在</标签名>的格式;即,后面必须有</XXX>这种格式的。
3
、每个XML都有有一个根元素,也叫根节点。
4
、节点有节点值和属性。
5
XML的节点值如果出现与XML标签关键字一样的字符,XML将会无法解析文档,比如,某个节点值如果是一个大于或者小于号,就会让解释器产生一个错误,

二、在FLASH中创建一个简单的实例:
//
创建一个新的XML类实例
var my_XML:XML=new XML();
//
创建一个TextArea组件,用于显示此XML内容
var my_TextArea:mx.controls.TextArea;
//
加载外部XML文件
//
如果加载的XML文件在该FLASH目录的上面,就用../my_xml.xml,如果在下面呢,就用aaa/my_xml.xml,这样的.
my_XML.load("my_xml.xml");
//
load函数定义onLoad函数---此处是必须的。只有当加载成功后,才能控制XML。否则不能。

my_XML.onLoad=function(ok:Boolean){
if(ok){
my_TextArea.text+=this;
}else{
my_TextArea.text+="
加载失败..."
}
}
//
勿略空白:

my_XML.ignoreWhite=true;

三、关于FLASH解析XML详解,说白了,也就是对节点的读取。
首先,来看看这幅图,稍微加点印象。


下面,我将对XML文件的解析方面做详细的介绍。
为了便于讲解,在此,我举一个简单的例子。
1
、新建一个记事本文件,在里面输入如下内容:

<?xml version="1.0" encoding="utf-8"?>
<
衬衣 颜色="白色" 品牌="雅戈尔">1</衬衣>
<
裤子 颜色="深蓝" 品牌="王子裤">2</裤子
>
<
鞋子 颜色="黑色" 品牌="红蜻蜓">3</鞋子
>
<
总花费金额
>
<
打的费>50</打的费
>
<
货物金>1000</货物金
>
</
总花费金额
>
</
购买物品
>

然后保存为"goods.xml",注意,在编码处,要选择"Unicode"


2
、下面,就对里面的各项值进行解读。
读取整个XML文件的方法:
在刚才的XML的同级目录下新建一FLA文件,然后在场景中放置一TextArea组件。并赋实例名“my_TextArea”
然后在第一帧中添加如下代码:

var my_XML:XML=new XML();
System.useCodepage=true;
var my_TextArea:mx.controls.TextArea;
my_XML.load("goods.xml")
my_XML.onLoad=function(ok:Boolean){
if(ok){
my_TextArea.text+=this;
}else{
my_TextArea.text+="
加载失败"
}
}

CTRL+ENTER测试,即可以看效果。


首先,我们来看看如何对XML中的节点名称或者节点属性进行读取呢?
比如,我们要读取如例子中的"购买物品"这几个字符,该如何操作呢
?
我们使用如下语句
:
this.firstChild.nodeName;
如果要读取"衬衣
":
this.firstChild.childNodes[0].nodeName;
如果要读取"1
":
this.firstChild.childNodes[1].childNodes[0].nodeValue;
如果要读取裤子的品牌
:
this.firstChild.childNodes[1].attributes.
品牌
;

XML读取进LIST组件中:


System.useCodepage = true;
var my_TextArea:mx.controls.TextArea;
var my_List:mx.controls.List;
var my_XML:XML = new XML();
my_XML.ignoreWhite = true;
my_XML.load("shopping.xml");
my_XML.onLoad = function(ok:Boolean) {
  if (ok) {
    var childnodes = this.firstChild.childNodes;
    for (i=0; i<childnodes.length; i++) {
      my_List.addItem({label:childnodes[i].nodeName});
    }
  } else {
    my_TextArea.text += "
加载失败";
  }
};

第一个节点:
firstChild:
用法
:this.firstChild;
最后一个节点
:lastChild
用法
:this.firstChild;
兄弟节点
:nextSibling:
用法
:this.firstChild.childNodes[0].nextSibling;
另一个兄弟节点
:previousSibling:
用法
:this.firstChild.childNodes[0].previousSibling;
区别:nextSibling是朝后,previousSibling是当前之前
;
父类节点
:parentNode:
用法
:this.firstChild.parentNode;

xml
命名空间详解()

关于命名空间有很多人回避。认为太难。其实命名空间使用很普遍,在xml中也大量存在。初学as3者搞不清楚是因为关于这方面的教程少且as3帮助文件中也没有从基础讲起。而从一本厚厚的xml书籍中查询或者看官方网站的介绍又是一种非常苦的事情。这里我把我学习和理解的过程总结下,尽量用通俗的语言写出来。希望能够帮助初学者过这个难关,利益他人。

 

 

什么是XML的命名空间:

为了避免XML的标签同名。XML也拥有命名空间。标签可以放入命名空间中,不同的命名空间中的相同名称标签是不同的标签。

 

xml文件中,命名空间的定义如下:

<d:student xmlns:d=”http://www.develop.com/student>;

其中student 是命名空间的标签。http://www.develop.com是命名空间的标识。d是命名空间的前缀。

 

命名空间标签:

由于命名空间采取元素属性的定义方式,所以需要一个标签。

 

命名空间标识:

命名空间标识是命名空间最重要的属性,重要到当输出一个命名空间时就直接转换为它的标识。标识有个规范的称呼:URI(统一资源定位符)URI的最大特点是唯一性。如果不唯一就失去了辨识的意义。实际上相同URI不同的命名空间被看成同一个命名空间。URI分为两种类型:

 

 

URL(统一资源定位器):

通俗的说URL就是网页地址。因为每个网页在internat上都是唯一的。

 

URN(统一资源名称)

可以不使用网页地址而使用唯一名称来定义。如:

urn:2007-12-9/workgrop/xin/projiectname

urn:E7f73B13-05FE-44ec-81CE-F898C4A6CDB4

这个编号是在系统中注册的控件编号,因此是唯一的。

 

 

前缀:

前缀用于在XML中作为URI的简化引用。因为URI太长了。如:

<d:student xmlns:d="http://www.develop.com/student">

 

<d:id>3235329</d:id>

 

<d:name>Jeff Smith</d:name>

</d:student>

使用前缀把标签放入对应的命名空间中。

 

 

有了命名空间区分后相同标签名可以不会被错误解析。实际上命名空间加上元素名叫做QNameQName有两个属性:urilocalName,分别获取命名空间名和本地名称。这个QName可以使用xmlname()方法得到。如上例子中的xml文件可以使用如下代码访问:

01.var ns:Namespace=xml.namespace();

 

02.var node:XMLList=xml.ns::id;

 

03.var qNameName=node.name();

 

04.trace(qName.uri);

 

05.trace(qName.localName);

复制代码

 

 

命名空间不一点要定义在根节点。可以在任何标签中定义,但只有定义了后才能使用。命名空间还可以嵌套或者被重定义。但这样会增加复杂性。一般用的比较少。一个xml文件中可以拥有多个命名空间。使用命名空间前缀可以轻松处理它们。如:

01.<x:transform version=”1.0” xmlns:x=http://www.w3.org/1999/XSL/Transform

 

02.

 

03.xmlns:d=”urn:dm:student”>

 

04.<x:template match=”student”/>

 

05.<d:template match=”name”/>

 

06.</x:transform>

复制代码

使用默认命名空间:

xml文档中,可以使用以下语句定义默认命名空间:

xmlns=<namespace identifier>

使用默认命名空间后,如果不加前缀则引用默认命名空间。使用默认命名空间会降低xml结构的清晰度。要慎用。

 

toXMLString()------显示XML源代码,

例:

var xml:XML=<root xmlns:mon="http://web.com" xmlns="http://xml.com">

<axml bb="dd" mon:dd="sd">dfdf</axml>

<bat bb="batdd01" mon:dd="batdada001"/>

<mon:ss>0202</mon:ss>

<xml2>0303</xml2>

<xmlTT>yougetthat1</xmlTT>

<xmlTT>yougetthat2</xmlTT>

<xmlTT><bbs>yougetthat3</bbs></xmlTT>

</root> ;

var emptyNS:Namespace=xml.namespace("");

trace( xml.emptyNS::axml ); //显示 dfdf

trace( xml.emptyNS::axml.toXMLString() ); //显示 <axml bb="dd" mon:dd="sd">dfdf</axml>

trace( xml.emptyNS::bat ); //显示 空值

trace( xml.emptyNS::bat.toXMLString() ); //显示 <bat bb="dd" mon:dd="sd"/>

 

namespace----指定命名空间 namespace("") 为空是指默认命名空间 namespace("mon")

:()

var emptyNS2:Namespace=xml.namespace("mon");

trace( xml.emptyNS2::ss ); //显示 0202

trace( xml.emptyNS2::ss.toXMLString() ); //显示 <mon:ss>0202</mon:ss>

 

QName---------根据空间名称如:http://xml.com 与 XML中的节点名称 如: bat 来查找该节点 (如果子节点没有定文xmlns ,则使用父级的xmlns)

QName (uri:Namespace, localName:String);

QName (uri:String, localName: QName);

QName (uri:String, localName: String);

例如:

var xmllist2:XMLList=xml.emptyNS::bat;

var qnxx:QName = new QName("http://xml.com", "bat");

trace(xmllist2.attribute(qnxx));//输出: batdada001;

 

attribute--------直接查找节点名属性值,比如:mon:dd="batdada001" (如上)

attributes-------返回对象(节点)的属性值列表 

比如:

var xmllist2:XMLList=xml.emptyNS::bat;

trace(xmllist2.attributes()[0]) //batdd01;

trace(xmllist2.attributes()[1]) //batdada001;

trace(xmllist2.attributes().length()) //2;

 

elements-------列出某 XML 对象的元素

比如:

trace(xml.elements("*").length()) //4

trace(xml.elements("*")[0].toXMLString()) //<axml bb="dd" mon:dd="sd">dfdf</axml>;

trace(xml.elements("*")[0]) //dfdf

 

descendants------------返回包含给定 name 参数的 XML 对象的所有后代(子级、孙级、曾孙级等)

例:

var qnbb:QName = new QName("http://xml.com", "xmlTT");

var lastxml:XMLList=xml.descendants(qnbb);

trace(lastxml)

//输出的结果是:

<xmlTT xmlns:mon="http://web.com" xmlns="http://xml.com">yougetthat1</xmlTT>

<xmlTT xmlns:mon="http://web.com" xmlns="http://xml.com">yougetthat2</xmlTT>

<xmlTT xmlns:mon="http://web.com" xmlns="http://xml.com">

<bbs>yougetthat3</bbs>

</xmlTT>

///////////////////////////

var qnbb2:QName = new QName("http://xml.com", "axml");

var lastxml2:XMLList=xml.descendants(qnbb2);

trace(lastxml2)//dfdf

 

分享到:
评论

相关推荐

    flash+xml.rar_FLASH XML_flash flv xml_xml_xml flash

    这个压缩包可能包含了关于如何在Flash中使用XML的教程、示例代码或者相关文档。"FLASH XML"和"flv xml"可能指的是在Flash中处理XML数据以实现FLV(Flash Video)流媒体播放的技术。"xml_xml flash"则可能强调了XML在...

    各样式Flash Mp3 Player网页播放器Flash+Xml中文模块

    在IT领域,Flash MP3 Player是一种常见的网页音乐播放解决方案,尤其在过去的网页设计中非常流行。这个"各样式Flash Mp3 Player网页播放器Flash+Xml中文模块"集合提供了25种不同的Flash+Xml播放器样式,可以适应各种...

    xml+flash个人网站

    在XML+Flash的个人网站中,XML文件通常用于存储网站的文本、图像、链接等数据。Flash则负责解析这些XML数据并以动态、交互的方式呈现出来,为用户带来丰富的视觉体验和互动效果。 1. **XML的应用**:XML文件结构...

    实用flash+xml全flash站模板素材

    在IT行业中,Flash和XML是两种非常重要的技术,它们在创建动态、交互式的网页内容方面发挥了巨大作用。本文将深入探讨“实用Flash+XML全Flash站模板素材”这一主题,帮助你理解这两种技术如何结合使用,以及如何通过...

    使用XMLflash模板

    在Flash应用中,深链接可以通过ActionScript实现,使得用户可以分享特定的页面链接,其他人点击后可以直接进入对应的状态,增强了用户体验和应用的可发现性。 结合这些标签,我们可以预见,这篇内容可能会涵盖以下...

    flash+xml播放器

    关于压缩包子文件的文件名称“zishu_mp3”,这可能表示压缩包中包含的资源是MP3音频文件,可能是一个示例的播放列表或者用于测试Flash+xml播放器的媒体文件。MP3是一种流行的数字音频压缩格式,它允许在保持相对高...

    flash+XML基础交互实例

    `data.xml`是存储数据的文件,可能包含项目列表、描述、图片引用等,这些数据可以在Flash应用程序中显示出来。 `04B_08__.TTF`是一个字体文件,用于在Flash中添加特殊字体样式,确保用户端即使没有安装该字体也能...

    flash+xml 公司Flash整站素材含FLA源码

    3. **Flash+XML结合**:将Flash与XML结合,开发人员可以将内容(如文本、图片、数据等)存储在XML文件中,然后在Flash项目中动态加载。这样做的好处是内容可以在不修改Flash本身的情况下进行更新,提高了维护效率和...

    XML+FLASH相册打包【全页面】

    XML+FLASH相册打包【全页面】是一种在网页设计中广泛应用的技术组合,它结合了XML(可扩展标记语言)的数据管理能力和Flash的动态展示效果,为网页中的相册功能提供了丰富的交互体验。以下是对这个技术组合及其应用...

    flash+xml试题库

    `答题 cs4-2.swf`则是编译后的Flash应用程序,可以直接在支持Flash的浏览器中运行,提供用户友好的测试体验。 `flash test.swf`可能是另一个独立的Flash试题展示文件,可能包含了不同的界面设计或者特定的测试功能...

    利用XML动态生成Flash

    通过将数据存储在XML文件中,Flash应用程序可以在运行时解析这些数据,然后根据需要生成或改变内容。这样,开发者无需重新编译整个Flash项目,只需更新XML文件即可更新内容。 以下是利用XML动态生成Flash的基本步骤...

    flash+xml.rar_FLASH XML_flash java

    在Flash中,通过ActionScript(Flash的编程语言)可以解析和加载XML文件,这使得Flash应用程序能够从外部获取和更新数据,增强了灵活性和可扩展性。例如,一个Flash XML播放器可能会利用XML文件来定义播放列表,包括...

    flash加载xml

    这种技术广泛应用于各种需要实时更新数据的Flash应用程序中,如新闻站点、产品展示、在线目录等,极大地增强了Flash项目的交互性和实用性。 #### 结语 随着技术的发展,尽管Flash的使用已不如从前普遍,但其在处理...

    flash+xml 相册

    总的来说,Flash XML相册是将动态效果和内容管理相结合的一种解决方案,尽管随着HTML5的普及,Flash在现代网页中的应用逐渐减少,但了解其工作原理和制作方法对于理解早期互联网的多媒体设计仍然具有一定的历史价值...

    FLASH与XML教程

    ### FLASH与XML教程 #### 一、引言 在Flash开发过程中,利用XML(Extensible Markup Language,可扩展标记语言)来获取外部数据是一...希望你可以进一步探索更多关于XML和Flash的知识,从而更好地应用于实际项目中。

    flash读取XML文件

    在Flash中,可以使用XML来定义和应用CSS样式,从而实现更灵活的界面设计。例如,可以创建一个XML文件来存储样式规则,然后在AS3代码中解析这些规则并应用于舞台上对应的DisplayObject。 总结: Flash读取XML文件是...

    漂亮的网页版flash xml

    在实际应用中,开发者首先会用Flash Professional等工具创建动画组件,并编写ActionScript代码来处理XML数据。XML文件通常会包含每张幻灯片的图片路径、标题、描述等信息。然后,Flash组件会在网页加载时解析XML文件...

    flash+xml相册

    4. **集成XML数据**:在Flash项目中,通过ActionScript读取XML文件,将数据加载到相册中,动态生成图片展示。 5. **测试与发布**:在完成所有功能后,测试相册的运行情况,确保无误后发布到网页上。 **优点与应用...

Global site tag (gtag.js) - Google Analytics