Flash与XML数据交互
记得刚开始学习flash时是学as3.0的,当时flash与XML数据交互困扰了我一个多星期….今天在商创技术发现了这篇对学习flash的新手来说很有意义。转载与大家分享!
在AS3里,对XML的控制变得非常方便了,有用过AS2的读者都知道,如果我们用AS2去访问一个节点,做法是xmlObj.firstChild.childNodes[2]如果复杂的XML结构就更麻烦了,所以在AS2时需要把一系统的节点用一个值来先做“替身”即xmlList= xmlObj.firstChild.childNodes来降底程序的复杂程序。
AS3里使用E4X(ECMAScript for XML)来规范定义组用于处理 XML 数据的类和功能。E4X 类的方法、属性和运算符实现以下便利:
· 简单:在可能的情况下,使用 E4X 可以更容易地编写和理解用于处理 XML 数据的代码。
· 一致:E4X 背后的方法和推理在内部是一致的,并与 ActionScript 的其它部分保持一致。
· 熟悉:使用众所周知的运算符来处理 XML 数据,如点 (.) 运算符。
E4X 类有包括XML、XMLList、QName 和 Namespace。下面我们来看看XML类,如何创建修改XML文件。
注:本文出自《FlashCS3 动画制作一点通》 节选于第十一章
11.3.1 声明XML对象
XML 对象可能表示 XML 元素、属性、注释、处理指令或文本元素。
声明一个XML对象基本语法如下:
1 | var xml:XML=new XML(<myxml>xml文件</myxml>) |
使用new XML()创建XML对象,AS3声明XML对象比较灵活了,XML对象里的内容可以用引号也可以像上面的代码不使用引号。更直接的声音方式直接赋值,只要XML结构是正确的就行,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var xml=
<myxml>
<item id='1'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
</myxml>
trace(xml.toXMLString()) |
第8行,使用对象的toXMLString()方法输出xml,这个方法要和toString()区分开来,还有一个是输出XML文本结点的方法text(),我们先来区分一下这三个方法,便于我们后面的学习。
范例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var xml:XML=
<body>
text1
<bar>barText1</bar>
<bar>barText1</bar>
text2
</body>
trace(xml.text());//输出:text1text2
trace(xml.text()[0]);//输出:text1
trace(xml.text()[1]);//输出: text2
trace(xml.child(1).toXMLString());//输出:<bar>barText1</bar>
trace(xml.child(1).toString());//输出:barText1 |
toXMLString()方法:始终返回XML 对象的开始标签、属性和结束标签的字符串型式。
toString()方法:只是按字符串形式返回节点的内容。
text()方法:则是返回XML 文本节点的所有 XML 属性的 XMLList 对象,上面的例子,有两个文本节点text1和text2。


欢迎留言