2022年AS与XML数据交互[收 .pdf
《2022年AS与XML数据交互[收 .pdf》由会员分享,可在线阅读,更多相关《2022年AS与XML数据交互[收 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Flash AS 与 XML数据交互http:/ 16:43:02 来源:作者:望月狼在 AS3里,对 XML的控制变得非常方便了,有用过AS2的读者都知道,如果我们用AS2去访问一个节点,做法是 xmlObj.firstChild.childNodes2如果复杂的XML结构就更麻烦了,所以在 AS2时需要把一系统的节点用一个值来先做“替身”即xmlList=xmlObj.firstChild.childNodes来降底程序的复杂程序。AS3里使用 E4X(ECMAScript for XML)来规范定义组用于处理 XML 数据的类和功能。E4X 类的方法、属性和运算符实现以下便利:简单:在可
2、能的情况下,使用 E4X 可以更容易地编写和理解用于处理 XML 数据的代码。一致:E4X 背后的方法和推理在内部是一致的,并与 ActionScript 的其它部分保持一致。熟悉:使用众所周知的运算符来处理 XML 数据,如点 (.)运算符。E4X 类有包括 XML、XMLList、QName 和 Namespace。下面我们来看看XML类,如何创建修改XML文件。11.3.1 声明 XML对象XML 对象可能表示 XML 元素、属性、注释、处理指令或文本元素。声明一个 XML对象基本语法如下:使用 new XML()创建 XML对象,AS3声明 XML对象比较灵活了,XML对象里的内容可以
3、用引号也可以像上面的代码不使用引号。更直接的声音方式直接赋值,只要XML结构是正确的就行,如下:第 8 行,使用对象的toXMLString()方法输出 xml,这个方法要和toString()区分开来,还有一个是输出XML文本结点的方法text(),我们先来区分一下这三个方法,便于我们后面的学习。范例如下:toXMLString()方法:始终返回XML 对象的开始标签、属性和结束标签的字符串型式。var xml:XML=new XML(xml文件)var xml=burger 3.95 trace(xml.toXMLString()var xml:XML=text1 barText1 bar
4、Text1 text2 trace(xml.text();/输出:text1text2 trace(xml.text()0);/输出:text1 trace(xml.text()1);/输出:text2 trace(xml.child(1).toXMLString();/输出:barText1 trace(xml.child(1).toString();/输出:barText1 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -toString()方法:只是按字符串形式返回节点的内容。text()方法:则是返回XML 文本节点的所有 XML 属性的 XMLList 对象
5、,上面的例子,有两个文本节点text1和 text2。11.3.2 XML节点访问存取节点是使用XML对象的基础,要用好 XML先要掌握管理XML类的方法,XML类提供了以下各管理节点的方法。1.访问 XML各节点。在学习访问XML节点前,要先弄明白XML各层次的关系后面,要使用这个层级与节点编号来访问不同位置的节点。虽然我们看来,“text1”只是一段包含 卷标元素的字符串而以,但是经过Flash 内部的 XML解析器处理后,XML里的每个元素都会被展现成树状的层级结构,各层之间都存在规律性的编号。我们把下面的代码分解如图11-12 所示。var xml:XML=proText text1
6、text2 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -图 11-12 用 IE 浏览 XML 文件上图中,红色方块表示卷标,黑色方块表示文字元素。XML中卷标和文字元素都算是一个节点。XML结构如同一个二维表对横向和纵向进行编号,我们常要使用这个编号访问各节点。在 AS2里,我们常使用xmlObj.firstChild.childNodes0来访问节点。AS3里我们有很多方法来访问不同位置的节点,首先介绍使用child()访问节点。child()方法(propertyName:Object):XMLList 使用 child()方法列出其子项,一个XML子项就是
7、一个XML元素、文本节点、注释或处理指令。代码如下:child()方法,可以直接使用子项目编号来读取,及 child(1)比如上面的xml 对象,我们用 xml.child(bar)0和 xml.child(1)输出结果是一样的。如果用“*”号代替编号则表示输出所有节点,范例代码如下:children()方法(propertyName:Object):XMLList var xml:XML=text1 text1 trace(xml.child(bar).length();/输出 2 trace(xml.child(bar)0.toXMLString();/输出:text1 trace(xml
8、.child(bar)1.toXMLString();/输出:text2 var xml:XML=text1 ,text1 trace(xml.child(bar)0.toXMLString();/输出:text1 trace(xml.child(0).toXMLString();/输出:text1 trace(xml.child(*).toXMLString();/输出:text1 text2 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -children()按照 XML对象的显示顺序列出其子项。一个XML子项就是一个XML元素、文本节点、注释或处理指令。和 ch
9、ild()方法不同,child只是读取单个子项的,而children()是读取所有的子项。我们也可以按子项编号用children()来完成 child()的工作,下面用个范例做个对比,如下:代码中,第6 行 children()没有用编号时,则读取所有的子项结点。第8 行,xml.children()0读取编号为0的节点,这和第9 行使用 child()方法读取单条节点项的作用是一样的。elements()方法 (name:Object=*):XMLList elements()方法可以列出XML对象的元素。一个由开始和结束标签组成的元素,可以使用参数name,用节点名子访问,也可以使用“*”
10、访问所有节点。范例如下:elements()看起来和 children()一样,都是读取 XML对象的所有子项。这两个方法是有区别的,而且区别很大。elements()只是读取 XML对象的元素,如batText或者单个元素 ,而 children()都是读取所有的子项,包括文本节点、注释或处理指令等,只要在XML里有设置其注释与指令能输出,并可以用children()。对比范例如下:var xml:XML=text1 text2 trace(xml.children();/输出:text1text2 trace(xml.children()0.toXMLString();/输出 text1
11、trace(xml.child(0).toXMLString();/输出 text1 var xml:XML=barText1 barText2 trace(xml.elements(*);/输出:barText1barText2 trace(xml.elements(*)0.toXMLString();/输出:barText1 trace(xml.elements(bar).length();/输出:2 trace(xml.elements(bar)1.toXMLString();/输出:barText2 XML.ignoreComments=false;/先设置不忽略注释才能用childe
12、rn获取注释XML.ignoreProcessingInstructions=false;/先设置不忽略XML指令var myxml:XML=44 dtext ;trace(myxml.children().toXMLString();/*输出所有子项:44 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -对比下第 11 行和第 19 行,两种方法输出的子项,现在可以很显视地区分这两个方法了。descendants()方法(name:Object=*):XMLList descendants()是读取包含给定 name 参数的 XML 对象的所有后代(子级、孙级、曾孙
13、级等)。这和前面介绍的几个方法又有所不同了,前面介绍的child()、children()和 elements()都只是读取所指点的那层的子项,而这个 descendants()是读取其下面所有的层级子项,所用的参数和elements()是一样可以使用参数name,用节点名子访问,也可以使用“*”访问所有节点。范例如下:对比下使用descendants()和 child()读取节名 b 后的区别,child()只是从当前层读取节点b,descendants()则读取 XML对象里所有节点名为b 的节点,我们可以xml.descendants(b)1用编号去选取需要访问的结点,从而在不清楚XML
14、对象里节点名为“b”的层次位置也能很好的访问。“.”dot(XML)运算符这里,还可以使用点运算符来读取XML的结点,别看这个“小不点”点运算符在AS里的并不莫生,作用也大着。AS2时代,我们使用点运算符来向影片剪辑的深层次访问变量,现在 XML的层级关系里,一样可以灵活地运用点运算符来问了。范例如下:第 6 行,使用点运算符,直接访问节点名则获得他所有的子项这和上面介绍的xml.children()作用一样,只是 children可以在未知节点名的情况下获取所有子项,第8行则跟 child(1)的作用一样了。使用 parent()访问上一级节点 dtext */trace(myxml.ele
15、ments(*).toXMLString();/输出:44 var xml:XML=text1 text2 trace(xml.descendants(b).toXMLString();/输出:text1text2 trace(xml.child(b).toXMLString();/输出:text1 var xml:XML= ,;text1 text2 trace(xml.bar);/输出:text1text2,trace(xml.bar1.toXMLString();/输出:text2 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 11 页 -在 AS2里,访问上一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年AS与XML数据交互收 2022 AS XML 数据 交互
限制150内