网页编程 - FLASH与XML通信

FLASH加载外部变量的方法有很多种,LoadVariables就是其中一个。不过这个方法瑕疵太多,一个“&”号之后就全变空白了。所以做FLASH留言本时我们不得不用到XML。

    

    打开记事本,输入类似以下的XML代码: 

    

    <?xml version="1.0"?><!--本行前面不要留空格-->

    

    <gbook>

    <pagecount>10</pagecount>

    <items>

    <item>

    <name>冰灼</name>

    <msg>&lt;新年快乐!&gt;</msg>

    </item>

    <item>

    <name>张三丰</name>

    <msg>啊!降龙十八掌!</msg>

    </item>

    <item>

    <name>小泉纯一狼</name>

    <msg>我承认我是乱伦生来的</msg>

    </item>

    </items>

    </gbook>

    然后保存,编码选"UTF-8",至于保存成什么文件,".asp",".htm",".txt"都可以,这里保存为"test.xml". 

    

    新建FLA文档,保存为"test.fla"与"test.xml"同一目录下.然后在"test.fla"的主场景第一帧输入: 

    

    var x=new XML();//新建XML对象

    x.ignoreWhite=true;//忽视空格

    x.load("test.xml")

    x.onLoad=function(success){//请保持此格式

         if(success){

              trace(x.firstChild.lastChild.firstChild.lastChild.firstChild);

         }else{

              trace("fail to load!")

         }

    };

    测试看看输出了什么,是"<新年快乐!>".呵呵不错吧,"&"后面的东西都在. 

    

    下面结合上面的例子解释一下XML对象的各方法.(根对象为上例中的x,即整个XML文档) 

    

    1. x.firstChild 

    返回x的第一个子对象,从"<gbook>"到"</gbook>"(包括<gbook>)之间的所有字符,返回类型也是一个XML对象 

    

    2. x.lastChild 

    返回x的最后一个子对象,可是整个XML文档只能有一个顶层元素,所以对x来说,firstChild和lastChild都返回同一个对象 

    

    3. x.childNodes 

    返回以x的所有子对象为元素的数组,因为x只有一个子对象"<gbook>……</gbook>",所以这句返回的数组长度是1.若是令y=x.firstChild.childNodes,则返回gbook下的两个子节点pagecount和items组成的数组.其中y[0]是<pagecount>10</pagecount>;y[1]是<items>到</items>间的所有字符. 

    

    4. 按上文,x.firstChild.lastChild是gbook下的items成对标记(包括<items>)之间的部分;x.firstChild.lastChild.firstChild是items下的第一个item成对标记之间的部分,即 

    

    <item>

    <name>冰灼</name>

    <msg>&lt;新年快乐!&gt;</msg>

    </item>

    接着,x.firstChild.lastChild.firstChild.lastChild是item下的最后一个成对标记之间的部分“<msg>&lt;新年快乐!&gt;</msg>”.到这里,返回类型一直都是XML节点,然后再往下:x.firstChild.lastChild.firstChild.lastChild.firstChild就是节点中的字符串"&lt;新年快乐!&gt;"(注:此字符串以XML对象形式返回,请和下句nodeValue区别) 

    

    5. x.nodeValue 

    这个主要返回XML对象的值,返回类型为字符串.比如上文中的"pagecount",可以用x.firstChild.firstChild.firstChild得到,但是这样得到的是一个XML对象10,不能用于数字间的运算.所以要用x.firstChild.firstChild.firstChild.nodeValue得到其字符串值pagecount,再用Number(pagecount)转化为数字. 

    

    6. x.nodeName 

    返回节点名,即上文中的成对标记的关键字gbook,pagecount,items等等. 

    

    常用标记就介绍到此,如有不明,请与我联系。