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 。
<?xml version="1.0"?> <!--xml-001.xml--> <firstNode name="1"> <childNode name="1.1" /> <childNode name="1.2" /> <childNode name="1.3" /> </firstNode>
上面是一个简单的xml文档,结构是一个顶层节点中嵌套三个子级节点。
现在在Flash中如何读出来呢?来看操作:打开Flash,新建一个Flash文档,保存到刚才的xml文档中的目录中,命名 xml-001.fla。在第一帧输入下面代码:
//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<child_arr.length; i++) { //输出顶层节点下的子级节点的节点名和顶层节点下的子级节点中属性name的值. trace(child_arr[i].nodeName+":"+child_arr[i].attributes.name); } } else { trace("加载失败!"); } };
实验2: 现在做的是把一个多层嵌套节点的xml文档在Flash中输出来。新建一个xml文档,在记事本中输入下面的代码,然后保存为 xml-002.xml。
<?xml version="1.0"?> <!--xml-002.xml--> <firstNode name="1"> <childNode name="1.1"> <Node name="1.1.1" /> <Node name="1.1.2" /> <Node name="1.1.3" /> </childNode> <childNode name="1.2"> <Node name="1.2.1" /> <Node name="1.2.2" /> <Node name="1.2.3" /> </childNode> <childNode name="1.3"> <Node name="1.3.1" /> <Node name="1.3.2" /> <Node name="1.3.3" /> </childNode> </firstNode>
上面是一个多层嵌套节点的xml文档,结构是一个顶层节点中,嵌套3个子级节点,3个子级节点分别嵌套3个子级节点。现在又应该怎样在Flash中读出来呢?其实原理跟上面一样,在for中嵌套一个for就可以了。
经典论坛讨论: http://bbs.blueidea.com/thread-2743872-1-1.html
出处:蓝色理想
责任编辑:elesa
上一页 Flash处理XML文档数据教程 [1] 下一页 Flash处理XML文档数据教程 [3]
◎进入论坛Flash专栏版块参加讨论
|