AS3之解析XML

来源:互联网 发布:淘宝网页点击没反应 编辑:程序博客网 时间:2024/05/01 02:32

范例代码:

 

var xml:XML= <data>  <item name="cat" id="1" type="pet" />  <item name="starling" id="1" type="animal" />  <item name="mouse" id="1" type="animal" />   <item name="dog" id="1" type="pet" /></data>


目的:要得到type为pet的name,  用@type属性找,注意写法带圆括号,包含@  .(@type == 'pet')

var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) {trace(i,xml2[i]);}

trace得到

0
1

怎样得到name的值呢?

-->toString......转成字符串,读出来

var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) { trace(i,xml2[i].toString());}

trace得到

0
1

读不出来?-->撕碎XML,暴力解决!......

var str:String = xml.item.(@type == 'pet').toString();trace(str);var arr:Array = str.split('\n');trace(arr.length);for (var i:int = 0; i < arr.length; i++) { var txt:String = arr[i];txt = String(txt.split(' ')[1]);txt = txt.substring('name="'.length, txt.length - 1); trace(txt);}

trace得到

<item name="cat" id="1" type="pet"/>
<item name="dog" id="1" type="pet"/>
2
cat
dog

神啊,请赐予我力量,奥特曼~~

记住这个:toXMLString()

var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) {trace(i,xml2[i].toXMLString());}

trace得到

0 <item name="cat" id="1" type="pet"/>
1 <item name="dog" id="1" type="pet"/>

name呢----〉用属性标签

var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) {trace(i,xml2[i].@name);}  

trace得到

0 cat
1 dog

收功

 

 

package  {import flash.display.Sprite;public class XMLtest extends Sprite{public function XMLtest() {var xml:XML= <data>  <item name="cat" id="1" type="pet" />  <item name="starling" id="1" type="animal" />  <item name="mouse" id="1" type="animal" />   <item name="dog" id="1" type="pet" /></data>/*var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) {trace(i,xml2[i]);}*//*var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) { trace(i,xml2[i].toString());}*//*var str:String = xml.item.(@type == 'pet').toString();trace(str);var arr:Array = str.split('\n');trace(arr.length);for (var i:int = 0; i < arr.length; i++) { var txt:String = arr[i];txt = String(txt.split(' ')[1]);txt = txt.substring('name="'.length, txt.length - 1); trace(txt);}*//*var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) {trace(i,xml2[i].toXMLString());}*/var xml2:XMLList = xml.item.(@type == 'pet');for (var i:*  in xml2) {trace(i,xml2[i].@name);}  }}}