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.aspackage { 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^ 大家学到知识就好~