AS3中关于XML部分(归纳)

XML,无论在各大小项目当中都会用到。可见其重要性。其实真正掌握XML并不难,关键是在于怎么合理,简洁,让人一目了然的设计出一张完整的XML表。

一、比较常见的错误:

1:元素属性值必须用引号""标志。

2:以下符号会导致XML错误:<、>、&、'、";只有在<![CDATA[ ]]>中,这些字符才不会被特殊对待,而看成普通的文本符号,从而不会导致错误。

3:如果一个数据元素包含多个同名的项目,用子元素去描述它;如果有大段文本,尤其是包含空白字符或者特殊字符时,用子元素。其余时候尽量使用子元素描述,降低XML层次数目。

二、创建XML两种方式

1、var foo:String="<book><name>坚持就是胜利</name></book>";
var fooXML:XML=new XML(foo);
trace(fooXML.name);
2、var fooXML:XML=<book><name>坚持就是胜利</name></book>

三、用法

(1)添加一个空白节点

fooXML.site[0].name=new XML();(添加空白节点,只声明,不实例化)
(2)以字符串添加一个子节点
fooXML.site[0].name="坚持就是胜利";

(3)用数组添加一个子节点

fooXML.site[0].weekvisit=[1000,2000,3000,4000];

(4)添加一个属性

fooXML.site[0].@language="chinese";
注意:删除一个元素或者属性,可以用"delete"。
eg; delete fooXML.site[0].name;

四、:XML子元素和属性的搜索(最好一边学习一边动手~这样容易加深记忆~)
(1)使用双点号..(后裔访问符)访问当前元素的所有子元素
eg:访问所有名为name的子节点,包括不同的层级
trace(fooXML..name);
(2)使用通配符*访问
eg:查找site子元素的属性,返回一个XMLList对象,并用toXMLString()方法输出
trace(fooXML.site.@*.toXMLString());
(3)使用表达式制定查找子元素的条件
eg:查找值小于1000的pageview子元素
trace(fooXML.site.(pageview<1000));
(4)使用表达式制定查找属性的条件
eg:查找site子元素中属性等于“动画”的节点
trace(fooXML.site.(@name=="动画"));
五、使用正则表达式自定义搜索
(1)appendChild(child:Object):XML 在当前子元素列表之后添加
(2)prependChild(value:Object):XML 在当前子元素列表之前添加
(3)insertChildAfter(child1:Object,child2:Object):* 在子元素child1之后添加
(4)insertChildBefore(child1:Object,child2:Object):* 在子元素child1之前添加
(5)contains() 对比该XML对象与给定value参数
(6)elements() 列出某XML对象的元素
六、XML支持克隆。使用copy()可以得到一份现有XML的值拷贝。
var kingdaCopy:XML = kingdaXML.copy();
对kingdaCopy操作就不会影响kingdaXML对象了。

自己弄的小例子:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<annMent url="assest/">
	<item id="1" btnName="系统公告" imaSrc='bj.png' txt="2012年11月17日 系统公告内容"></item>
    <item id="2" btnName="系统公告2" imaSrc='bj2.png' txt="2012年11月17日 系统公告内容2"></item></annMent>
	
LoadXML.as

package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	
	public class laodConfig extends Sprite
	{
		private var loader:URLLoader;
		private var xml:XML
		public function laodConfig()
		{
			loader = new URLLoader();
			loader.load(new URLRequest("config/annCFG.xml"))
			loader.addEventListener(Event.COMPLETE,loadComplete);
		}//加载XML
		private function loadComplete(evt:Event):void{
			xml = new XML(evt.target.data);
			var obj:Object = progressData(xml);
		}//解析XML
		private function progressData(x:XML):Object{
			var data:Object = {};
			data.url = x.@url.toString();
			for each(var xl:XML in x.item){
				trace(xl.btnName);
				data[xl.@id] = {"btnName":xl.@btnName.toString()
					,"imaSrc":xl.@imaSrc.toString()
					,"txt":xl.@txt.toString()}
			}
			return data;
		}
//		private function getObj(x:XML):Object{
//			var obj:Object = {};
//			return obj;
//		}
	}
}

编码问题:对于一些xml文件使用GBK编码,as默认是使用的utf-8编码,所以可能会出现乱码现象,这时不要担心,你只要在代码里面加上System.useCodePage=true;,就不会出现乱码了

只要多多练习,多查API~你也可以成为大牛噢~以上信息均摘在网络~如有雷同~肯定有雷同^v^ 大家学到知识就好~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值