准备:
首先你得有台电脑.其次是要装上Windows系统和Flash8.

XML基础:

既然是处理XML文档.就要先来了解下XML文档.下面是我所了解的,有些是在Flash中用不到的.
XML扩展标记语言(Extensible Markup Language)是SGML(Structured Generalized Markup Language)的子集.
XML是由World Wide Web Consortium(W3C)的XML工作组定义的.

下面开始了解XML的结构.
XML是由序言和文档元素组成的.
序言包括:
1.声明(declaration),文档的第一行,它说明这是一个XML文档. [可选]
2.注释,增强文档的可读性. [可选]
3.文档类型声明(document type declaration),XML文档类型定义必须在XML声明之后,文档元素之前,中间可以插入XML处理指令,它说明文档的类型和结构. [可选]
4.处理指令(processing instruction),在XML声明之后,处理XML信息的指令. [可选]
注:文档类型声明(document type declaration)需要用到xml词汇表.如果想了解详细信息请访问http://www.w3c.org.

文档元素:
元素说明了文档的逻辑结构,元素包函起始标签,元素内容,元素属性和结束标签.一个xml文档必须有一个顶层元素,所有的元素都嵌套在这个顶层元素中.文档元素名,属性名全部都是自定义的.

说明:
先看代码:

[Copy to clipboard] [ - ]
CODE:

<? xml version = " 1.0 " encoding = " gb2312 " standalone = " yes " ?>
<!-- xml 注释-->
<! DOCTYPE ChooseFlash >
<!--<! DOCTYPE 类型 SYSTEM " 一个dtd文件的地址 " & gt ;没有地址或地址错误都会出错, SYSTEM 一个关键字-->
<? xml - stylesheet type = " text/css " href = " 处理xml文档信息的css.css " ?>
<元素>
<子元素 属性= " 子元素 " >信息< / 子元素>
< / 元素>

上面是一个加了文档类型声明,处理指令的简单xml文档.下面一一解释.

[Copy to clipboard] [ - ]
CODE:
<?xml version=”1.0″ encoding=”gb2312″?>

这句是xml的声明信息.version是版本号,encoding是字符编码,如果有中文就需要用gb2312编码,standalone属性可以取yes和no,属性值yes,说明文档没有外部声明.属性值no,说明文档有外部声明.

[Copy to clipboard] [ - ]
CODE:
<!–xml注释–>

这句是xml的注释.

[Copy to clipboard] [ - ]
CODE:
<!DOCTYPE ChooseFlash>

这句是文档类型声明,DOCTYPE标记是声明类型用的.ChooseFlash是类型.这里的类型是指xml中的词汇表.

[Copy to clipboard] [ - ]
CODE:
<?xml-stylesheet type=”text/css” href=”处理xml文档信息的css.css”?>

这句是处理指令,xml-stylesheet是一个处理指令,type是类型,href是地址.这个处理指令把CSS链接到XML文档.跟html中应用css差不多一样.

[Copy to clipboard] [ - ]
CODE:
<元素>
<子元素 属性=”子元素”>信息</子元素>
</元素>

这个是文档元素(Flash用节点表示).<元素>是顶层元素,<子元素>是嵌套在顶层元素中的元素,”属性”是一个属性,”信息”是字符串.
也可以这样写: <子元素 属性=”子元素” 信息=”信息” />
如果用了文档类型声明,顶层元素命名最好跟声明的类型一至.否则会出错(要有词汇表时,像这个ChooseFlash这不会出错,因为没有这个词汇表.)

下面是一个完整xml文档.

[Copy to clipboard] [ - ]
CODE:
<?xml version=”1.0″ encoding=”gb2312″?>
<!–firstNode是一个顶层元素–>
<firstNode>
<!–childNode是一个嵌套在顶层元素firstNode中的子级元素,有一个nodeName的属性–>
<childNode nodeName=”childNode”>childNode</childNode>
</firstNode>

好,xml方面就到这里.–如果有错,请指教.如果想了解详细信息的请访问http://www.w3c.org.
下面就是怎么在Flash中调用XML文档和处理XML中的数据.

Flash方面:

在Flash中调用xml文档需要用到XML类和XMLNode类中的一些方法和属性.这里我们就不需要用到那么多.
把用到的方法和属性列出来:
XML类:
XML.ignoreWhite;//处理xml文档中的空白,设为true时,忽略空白,默认值为false.
XML.load(”xml文档的地址”);//加载指定的xml文档.
XML.onLoad=function(success:Boolean){};//成功加载了xml文档时调用.
XML构造函数.

XMLNode类:
XMLNode.attributes;//用来指定xml文档的属性.
XMLNode.childNodes;//返回指定xml文档对象的子级的数组.
XMLNode.firstChild;//引用父级节点的子级列表中的第一个子级.
XMLNode.nodeValue;//返回XML对象的节点值.
XMLNode.nodeName;//XML 对象的节点名称

开始实验:
首先说明:
在xml声明处加上encoding=”gb2312″.使用gb2312编码.;
Flash中如果有中文需要在加载代码前面加上System.useCodepage = true;
使用系统编码.防止乱码.

实验1:
一个简单的实验.把xml文档中的节点在Flash输出来.
新建一个xml文档.在记事本输入下面的代码.保存为 xml-001.xml ;

[Copy to clipboard] [ - ]
CODE:

& lt ;? xml version = " 1.0 " ?& gt ;
& lt ;!-- xml - 001 . xml --& gt ;
& lt ; firstNode name = " 1 " & gt ;
& lt ; childNode name = " 1.1 " / &gt;
&lt;childNode name="1.2" / & gt ;
& lt ; childNode name = " 1.3 " / &gt;
&lt; / firstNode & gt ;

上面是一个简单的xml文档.结构是一个顶层节点中嵌套三个子级节点.现在在Flash中如何读出来呢?来看操作:
打开Flash,新建一个Flash文档,保存到刚才的xml文档中的目录中,命名 xml-001.fla ;
在第一帧输入下面代码:

[Copy to clipboard] [ - ]
CODE:

//xml-001.fla.
//实例化一个xml对象.
var myxml : XML = new XML () ;
//分析时忽略xml文档中的空格.
myxml . ignoreWhite = true ;
//加载xml-001.xml文档.
myxml . load ( " xml-001.xml " ) ;
//调用XML.onLoad事件.
myxml . onLoad = function ( success : Boolean )
{
//如果加载成功,success=true;否则success=false;
if ( success ) {
trace ( " 加载成功! " ) ;
//输出顶层节点的节点名和顶层节点中属性name的值.
trace ( myxml . firstChild . nodeName + " : " + myxml . firstChild . attributes . name ) ;
//用一个数组来引用顶层节点中子级节点的数组.
var child_arr : Array = myxml . firstChild . childNodes ;
//用嵌套for语句遍历出xml文档中的所有数据.
//这个for遍历的是顶层节点下的子级节点.
for ( var i = 0 ; i & lt ; child_arr . length ; i ++ ) {
//输出顶层节点下的子级节点的节点名和顶层节点下的子级节点中属性name的值.
trace ( child_arr [ i ] . nodeName + " : " + child_arr [ i ] . attributes . name ) ;
}
} else {
trace ( " 加载失败! " ) ;
}
} ;

实验2:
现在做的是把一个多层嵌套节点的xml文档在Flash中输出来.
新建一个xml文档.在记事本中输入下面的代码.然后保存为 xml-002.xml

[Copy to clipboard] [ - ]
CODE:

& lt ;? xml version = " 1.0 " ?& gt ;
& lt ;!-- xml - 002 . xml --& gt ;
& lt ; firstNode name = " 1 " & gt ;
& lt ; childNode name = " 1.1 " & gt ;
& lt ; Node name = " 1.1.1 " / &gt;
&lt;Node name="1.1.2" / & gt ;
& lt ; Node name = " 1.1.3 " / &gt;
&lt; / childNode & gt ;
& lt ; childNode name = " 1.2 " & gt ;
& lt ; Node name = " 1.2.1 " / &gt;
&lt;Node name="1.2.2" / & gt ;
& lt ; Node name = " 1.2.3 " / &gt;
&lt; / childNode & gt ;
& lt ; childNode name = " 1.3 " & gt ;
& lt ; Node name = " 1.3.1 " / &gt;
&lt;Node name="1.3.2" / & gt ;
& lt ; Node name = " 1.3.3 " / &gt;
&lt; / childNode & gt ;
& lt ; / firstNode&gt;

上面是一个多层嵌套节点的xml文档.结构是一个顶层节点中,嵌套3个子级节点,3个子级节点分别嵌套3个子级节点.现在又应该怎样在Flash中读出来呢?其实原理跟上面一样.在for中嵌套一个for就可以了.

打开Flash新建一个Flash文档,保存到刚才的xml文档的目录中,命名为 xml-02.fla
在第一帧中输入以下代码:

[Copy to clipboard] [ - ]
CODE:

//xml-002.fla.
//实例化一个xml对象.
var myxml : XML = new XML () ;
//分析时忽略xml文档中的空格.
myxml . ignoreWhite = true ;
//加载xml-002.xml文档.
myxml . load ( " xml-002.xml " ) ;
//调用XML.onLoad事件.
myxml . onLoad = function ( success : Boolean )
{
//如果加载成功,success=true;否则success=false;
if ( success ) {
trace ( " 加载成功! " ) ;
//输出顶层节点的节点名和顶层节点中属性name的值.
trace ( myxml . firstChild . nodeName + " : " + myxml . firstChild . attributes . name ) ;
//用一个数组来引用顶层节点中子级节点的数组.
var child_arr : Array = myxml . firstChild . childNodes ;
//用嵌套for语句遍历出xml文档中的所有数据.
//这个for遍历的是顶层节点下的子级节点.
for ( var i = 0 ; i & lt ; child_arr . length ; i ++ ) {
//输出顶层节点下的子级节点的节点名和顶层节点下的子级节点中属性name的值.
trace ( child_arr [ i ] . nodeName + " : " + child_arr [ i ] . attributes . name ) ;
//这个for遍历的是顶层节点下的子级节点下的子级节点.
for ( var j = 0 ; j & lt ; child_arr [ i ] . childNodes . length ; j ++ ) {
//输出顶层节点下的子级节点下的子级节点的节点名 和 顶层节点下的子级节点下的子级节点中属性name的值.不要晕.看看输出面板就会明白它们之间的关系了哦.
trace ( child_arr [ i ] . childNodes [ j ] . nodeName + " : " + child_arr [ i ] . childNodes [ j ] . attributes . name ) ;
}
}
} else {
trace ( " 加载失败! " ) ;
}
} ;

实验3:
利用xml文档数据做用户登录.
新建一个xml文档.在记事本中输入下面的代码.然后保存为 xml-003.xml

[Copy to clipboard] [ - ]
CODE:

& lt ;? xml version = " 1.0 " encoding = " gb2312 " ?& gt ;
& lt ;!-- xml - 003 . xml --& gt ;
& lt ; UserDataList & gt ;
& lt ; manager Post = " 经理 " & gt ;
& lt ; UserData username = " MChooseFlash01 " password = " MChooseHappiness " / &gt;
&lt;UserData username="MChooseFlash02" password="MChooseHappiness" / & gt ;
& lt ; / manager&gt;
&lt;Employee Post="职员"&gt;
&lt;UserData username="EChooseFlash01" password="EChooseHappiness" / & gt ;
& lt ; UserData username = " EChooseFlash02 " password = " EChooseHappiness " / &gt;
&lt; / Employee & gt ;
& lt ; / UserDataList&gt;

首先分析下结构.
<UserDataList>是顶层节点.
<manager Post=”经理”>是顶层节点下的子级节点.Post是manager节点的属性.
<Employee Post=”职员”>是顶层节点下的子级节点.Post是Employee节点的属性.
<UserData username=”MChooseFlash01″ password=”MChooseHappiness” /> 是顶层节点下的子级节点下的子级节点.username和password是UserData节点的属性.

这次也需要用到嵌套for.
打开Flash新建一个Flash文档,大小为300*100,保存到刚才的xml文档的目录中,命名为 xml-03.fla
新建3个图层分别命名Actions , cont , bg .
bg层在第一帧画三个文本框大小的虚线框.
cont层在第一帧拉二个输入文本框,实例名分别为username_txt和password_txt,在拉一个动态文本框,实例名为 status_txt.将这三个文本框对齐须虚线框.再点窗口->公用库->按钮.拉一个按钮出来.实例名为login_btn.

Actions层在第一帧中输入以下代码:

[Copy to clipboard] [ - ]
CODE:

//xml-003.fla.
//使用系统编码.防止乱码.
System . useCodepage = true ;
//实例化一个xml对象.
var myxml : XML = new XML () ;
//分析时忽略xml文档中的空格.
myxml . ignoreWhite = true ;
//加载xml-002.xml文档.
myxml . load ( " xml-003.xml " ) ;
//调用XML.onLoad事件.
myxml . onLoad = function ( success : Boolean )
{
//如果加载成功,success=true;否则success=false;
if ( success ) {
trace ( " 加载成功! " ) ;
login_btn . onRelease = function ()
{
//用一个数组来引用顶层节点中子级节点的数组.
var child_arr : Array = myxml . firstChild . childNodes ;
//用UserData指定xml文档节点的attributes对象.
var UserData : Object ;
//这个for遍历的是顶层节点下的子级节点.
for ( var i = 0 ; i & lt ; child_arr . length ; i ++ ) {
//这个for遍历的是顶层节点下的子级节点下的子级节点.
for ( var j = 0 ; j & lt ; child_arr [ i ] . childNodes . length ; j ++ ) {
//用UserData指定child_arr[i].childNodes[j].attributes对象
UserData = child_arr [ i ] . childNodes [ j ] . attributes ;
//判断用户名和密码.
//这里的UserData.username其实就是child_arr[i].childNodes[j].attributes.username的简写.UserData.password同理.
//username和password是xml文档节点中的属性.因为xml和Flash区分大小写.所以在输入时要注意大小写.
if (( username_txt . text == UserData . username ) & amp ; amp ;& amp ; amp ; ( password_txt . text == UserData . password )) {
//Post这个是顶层节点下子级节点的Post属性.
status_txt . text = child_arr [ i ] . attributes . Post + " : " + UserData . username + " 登录成功 " ;
//如果用户名和密码正确就退出for.这个重要.如果不用这个,就会一直重复判断用户名和密码.直到将xml文档节点遍历完.那样就不是我们想要的.所以一有正确的就退出for;
return ;
} else {
status_txt . text = " 用户名或密码错误 " ;
}
}
}
} ;
} else {
trace ( " 加载失败! " ) ;
}
} ;

实例4:
利用List组件做个mp3播放列表.
新建一个xml文档.在记事本中输入下面的代码.然后保存为 xml-004.xml

[Copy to clipboard] [ - ]
CODE:

& lt ;? xml version = " 1.0 " encoding = " gb2312 " ?& gt ;
& lt ; mp3List & gt ;
& lt ; mp3 path = " jmzcg.mp3 " & gt ;啊桑-寂寞在唱歌& lt ; / mp3&gt;
&lt;mp3 path="jmjywsls.mp3"&gt;寂寞是因为思念谁&lt; / mp3 & gt ;
& lt ; mp3 path = " szwspdxd.mp3 " & gt ;老狼-睡在我上铺的兄弟& lt ; / mp3&gt;
&lt;mp3 path="qf.mp3"&gt;誓言-求佛&lt; / mp3 & gt ;
& lt ; mp3 path = " xyzth.mp3 " & gt ;下一站天后& lt ; / mp3&gt;
&lt;mp3 path="nswdxfm.mp3"&gt;伊能静-你是我的幸福吗&lt; / mp3 & gt ;
& lt ; mp3 path = " aqfx.mp3 " & gt ;爱情复兴 ( 容祖儿 ) & lt ; / mp3&gt;
&lt;mp3 path="qrlg.mp3"&gt;水木年华-秋日恋歌&lt; / mp3 & gt ;
& lt ; mp3 path = " qnyh.mp3 " & gt ;张国荣-倩女幽魂& lt ; / mp3&gt;
&lt;mp3 path="a.mp3"&gt;一首很棒的英文歌(酒吧里常放)&lt; / mp3 & gt ;
& lt ; / mp3List&gt;
 
xml结构:
&lt;mp3List&gt;xml文档中的顶层节点.
&lt;mp3 path="jmzcg.mp3"&gt;啊桑-寂寞在唱歌&lt; / mp3 & gt ;顶层节点下的子级节点. path 是 mp3 节点下的属性. " 啊桑-寂寞在唱歌 " 是 mp3 的节点值.
 
打开 Flash 新建一个 Flash 文档,大小为 200 * 150 ,保存到刚才的 xml 文档的目录中,命名为 xml - 04 . fla
新建 2 个图层分别命名 Actions , cont .
cont 层中拉一个 List 组件到第一帧.大小为 200 * 150 ,实例名为 mp3_list .
Actions 层第一帧输入下面代码:
 
[ Copy to clipboard ] [ - ]
CODE :
//xml-004.fla.
//使用系统编码.防止乱码.
System . useCodepage = true ;
//实例化一个xml对象.
var myxml : XML = new XML () ;
//分析时忽略xml文档中的空格.
myxml . ignoreWhite = true ;
//加载xml-004.xml文档.
myxml . load ( " xml-004.xml " ) ;
//调用XML.onLoad事件.
myxml . onLoad = function ( success : Boolean )
{
//如果加载成功,success=true;否则success=false;
if ( success ) {
trace ( " 加载成功! " ) ;
//用一个数组来引用顶层节点中子级节点的数组.
var child_arr : Array = myxml . firstChild . childNodes ;
//这个for遍历的是顶层节点下的子级节点.
for ( var i = 0 ; i & lt ; child_arr . length ; i ++ ) {
//将歌曲添加到List组件中.
//child_arr[i].firstChild.nodeValue这个是xml节点的节点值.
//child_arr[i].attributes.path这个是xml节点下的path属性.
mp3_list . addItem ({ label : ( i + 1 ) + " . " + child_arr [ i ] . firstChild . nodeValue , data : child_arr [ i ] . attributes . path }) ;
}
} else {
trace ( " 加载失败! " ) ;
}
} ;
//listEvent函数是执行List组件中change事件
function listEvent () : Void
{
//这个就是歌曲地址.用Sound类的loadSound方法就可以播放歌曲了.例:mysound.loadSound(mp3_list.selectedItem.data);详细请看帮助文档.
trace ( mp3_list . selectedItem . data ) ;
}
//添加帧听器.
mp3_list . addEventListener ( " change " , listEvent ) ;

Flash处理外部XML文档数据详细教程相关推荐

  1. [FLASH IDE] [教程]Flash处理外部XML文档数据详细教程[ASP,JSP]

    准备: 首先你得有台电脑.其次是要装上Windows系统和Flash8. XML基础: 既然是处理XML文档.就要先来了解下XML文档.下面是我所了解的,有些是在Flash中用不到的. XML扩展标记 ...

  2. Flash处理XML文档数据教程

    Flash处理XML文档数据教程 作者:chooseflash 时间: 2007-05-11 文档类型:原创 来自:蓝色理想 准备:首先你得有台电脑,其次是要装上Windows系统和Flash8. X ...

  3. 在Flash中调用xml文档

    在Flash中调用xml文档需要用到XML类和XMLNode类中的一些方法和属性.这里我们就不需要用到那么多.把用到的方法和属性列出来: XML类:       XML.ignoreWhite;//处 ...

  4. 中医门诊电子病历xml文档数据读入数据库实验流程演示

    前言: 本次实验老师要求我们用java程序实现,其整个实现流程也满足了老师提出的实验要求.由于绝大部分都是在课堂上完成的,写得有误的地方还请大家包涵. 1.下载所需的jar包并通过项目Build Pa ...

  5. 使用knife接口文档生成器详细教程

    文章目录 一.接口生成器 `knife` 介绍 二.效果图 三.SpringBoot整合knife 3.1 pom.xml的文件依赖 3.2 编写Swagger2Config配置文件 3.3 注意事项 ...

  6. XML文档类型定义DTD

    DTD概述 DTD用来定义XML文档的结构,它包含一系列规则说明,以确保XML文档的一致性和有效性 DTD定义了XML文档可用的词汇(元素和属性的名称)和结构: 元素名称,包括根元素 元素的属性及属性 ...

  7. 利用XSL和ASP在线编辑XML文档

    本文通过一个详细的例子,来阐述了在线编辑XML文档数据的方法.由于Netscape对XML的支持比较弱,因此,要实现跨平台的数据交换,数据的处理必须在服务器端进行.要编辑XML文档,首先要做的事情就是 ...

  8. XML文档定义有几种方式?它们之间有何本质区别?解析XML文档有哪几种方式?

    XML文档定义方式:有两种定义形式,dtd文档类型定义和schema模式 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的) 普通区别: 1.s ...

  9. [Swift通天遁地]七、数据与安全-(1)XML文档的创建和解析

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

最新文章

  1. linux tmux离线安装,linux环境下安装tmux
  2. ASP.NET Razor – C# 循环和数组简介
  3. 【采用】信贷业务风控逾期指标及风控模型评估指标
  4. leetcode 1738. 找出第 K 大的异或坐标值
  5. 深度学习概述_深度感测框架概述
  6. 3.2.7.1 替换细节
  7. 第十四:Pytest进阶之html测试报告
  8. 清华大学登顶亚洲第一:2019泰晤士高等教育世界大学排名发布
  9. 系统管理员设置了系统策略 禁止进行此安装的修改办法
  10. pytorch:定义自己的网络结构
  11. 解决Deepin开机锁屏状态下能够使用触控板而解锁之后无法使用触控板的BUG
  12. 美团面试-2016校园招聘
  13. 字节跳动瞄准千亿互联网医疗蓝海,张一鸣想靠AI算法当“药神”?
  14. 爪哇国新游记之十一----用异常控制流程
  15. 【汇正财经】什么是成长投入策略?
  16. 堆、栈、队列的区别以及使用场景
  17. 【python】实现多人网络聊天室
  18. 中国4K/8K超高清电视机行业发展研究与投资战略分析报告2021年版
  19. (27)uniGUI for C++ builder之杂七杂八小知识
  20. maven wagon ftp ssh

热门文章

  1. 计算机主机箱上是什么问题,电脑机箱常见问题有哪些?电脑机箱常见问题的解决方法...
  2. VMware安装Kali操作系统(全网最详细不接受任何反驳)
  3. 2018年上半年信息安全工程师下午案例题及解析
  4. 服务器cpu性能排行2019,2019年cpu排行_2019年cpu推荐_2019年cpu天梯图 _2019年度横评_太平洋电脑网PConline...
  5. OpenCV中imshow函数的使用
  6. 【LeetCode 655】输出二叉树
  7. 纵观移动云对象存储发展历程,也少不了 Apache APISIX 的能力加持
  8. 毕业一年了,职业生涯规划
  9. html flex布局换行,flex布局中的换行究竟是怎么使用的?
  10. 【PinkCAx】可视化工具开发记录与总结