1.定位元素
1.1XML中搜索元素是根据元素名称及层次关系来确定的,如果用户知道需要的元素所在位置可以直接定位.
格式:XML对象.元素所在位置;
1.2如果用户不是很清楚的知道元素的所在位置可以用".."方式.".."表示中间过程不清楚,采用搜索的方式查找(效率比较低);
格式:XML对象..搜索的元素;
1.3XML中经常会有相同的元素名称,可以用下标来确定具体的元素.
格式:XML对象.元素[下标];
Code
public function SearchElement():void
{
var example:XML=<items>
<item>
<name>Apple</name>
<color>red</color>
</item>
<item>
<name>Orange</name>
<color>orange</color>
</item>
</items>;
//定位
Alert.show("定位:" + example.item.name);
//搜索
Alert.show("搜索:" + example..name);
/*上面俩个返回的结果都是一样
<name>Apple</name>
<name>Orange</name>
* */
//下标
Alert.show("下标:" + example.item[0].name);
//返回Apple
}
2.读取元素内容
格式:XML对象.XML元素.toString();
Code
public function ReadElementContent():void
{
var book:XML=<book>
<title>Flex 程序设计</title>
</book>;
var title:String=book.title.toString();
Alert.show(title);
//返回Flex 程序设计
}
3.读取属性值
3.1使用"@"操作符读取属性值
格式:XML对象名.元素名.@属性名;
3.2使用attribute方法读取属性值
格式:XML对象名.元素名.attribute(属性名);
3.3使用attributes方法读取全部属性值:用户可以根据下标来区分同一元素下的属性
格式:XML对象名.元素名.attributes()[i];
Code
public function ReadElementAttribute()
{
var fruit:XML=<fruit name="Apple" color="red" />;
//返回red
Alert.show(fruit.@color);
//返回 Apple red
Alert.show(fruit.@*);
//返回red
Alert.show(fruit.attribute("color"));
//返回red
Alert.show(fruit.attributes()[1]);
}
4.删除元素和属性:使用delete语句可以删除XML中的元素和属性
格式:delete XML对象.元素;
delete XML对象.元素.@属性;
Code
public function DeleteElement()
{
var example:XML=<example>
<fruit color="red">Apple</fruit>
<vagetable color="Green">Broccoli</vagetable>
<dairy color="White">Milk</dairy>
</example>;
delete example.fruit.@color;
delete example.dairy;
delete example.vagetable.text()[0];
Alert.show(example);
/*返回:
<example>
<fruit>Apple</fruit>
<vagetable color="Green"/>
</example>
* */
var example2:XML=<example>
<fruit color="red">Apple</fruit>
<vagetable color="Green">Broccoli</vagetable>
<dairy color="White">Milk</dairy>
</example>;
var attributes:XMLList=example2.fruit.@*;
for (var i:int=attributes.length() - 1; i >= 0; i--)
{
delete attributes[i];
}
Alert.show(example2);
/*返回:
*
<example>
<fruit>Apple</fruit>
<vagetable color="Green">Broccoli</vagetable>
<dairy color="White">Milk</dairy>
</example>
*/
}
5.加载XML文件
1.创建指向外部XML文件的URLRequest对象:该对象在falsh.net包里.
格式:var URLRequest对象:URLRequest=new URLRequest(外部XML文件地址);
2.添加对"Event.COMPLETE"状态的监听.当然URLLoad对象加载XML完成后会触发"Event.COMPLETE"状态,用户需要手工添加对该状态监听.
格式:URLLoad变量名.addEventListener(Event.COMPLETE,处理函数名);
3.使用Load方法开始加载XML.
格式:URLLoad变量名.Load(URLRequest对象);
Code
package Test
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import mx.controls.Alert;
public class LoadXml extends Sprite
{
public function LoadXml()
{
Alert.show("1");
var loader:URLLoader=new URLLoader();
loader.dataFormat=URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, handleComplete);
Alert.show("2");
loader.load(new URLRequest("example.xml"));
Alert.show("3");
}
private function handleComplete(event:Event):void
{
try
{
Alert.show("4");
var example:XML=new XML(event.target.data);
Alert.show(example);
}
catch (e:TypeError)
{
}
}
}
}