用API控制插入XML子元素的位置

appendChild(child:object):XML:在当前子元素列表之后添加。
prependChild(child:object):XML:在当前子元素列表之前添加。
insertChildAfter(child1:object, child2:object):*:在子元素child1之后添加
insertChildBefore(child1:object, child2:object):*:在子元素child1之前添加

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var foo:XML = <data/>
foo.appendChild(<d>dd</d>);
trace(foo);
 
foo.prependChild(<b>bbb</b>);
trace(foo);
 
var cNode:XML = <c>ccc</c>;
foo.insertChildAfter(foo.b, cNode);
trace(foo);
 
var aNode:XML = <a>aaa</a>;
foo.insertChildBefore(foo.b, aNode);
trace(foo);

AS3简单方便地搜索XML子元素和属性

1.如何使用双引号(..),访问当前元素的所有子元素
2.如何使用通配符(*)访问
3.如何使用表达式制定查找子元素的条件
4.如何使用标点制定查找属性的条件

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var kingdaXML:XML =
 
150000
 
100000
 
50000
 
//用法1:访问所有名为pageview的子节点,包括不同层次
trace(kingdaXML..pageview);
 
//用法2:查找site子元素的属性,返回一个XMLlist对象,并用toXMLString()方法输出
trace(kingdaXML.site.@*.toXMLString());
 
//方法3:查找值小于100 000的pageview子元素
//这里100 000已被自动转换成数值类型
trace(kingdaXML.site.(pageview &lt; 100000));
 
//用法4:查找site子元素中属性等于ActionScript 3的节点
trace(kingdaXML.site.(@name == "ActionScript 3"));

AS3使用运算符操作XML数据

AS3操作XML比AS2爽快的不是一个等级,不在需要写什么childNodes,也不需要什么Xpath…

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//使用运算符访问XML子元素和属性
var kingdaXML:XML = 
	<websites>
		<site name="kingda's blog" url="http://www.design-studio.cn/">
			<pageview>100</pageview>
		</site>
		<site name="actionScript 3" url="http://www.actionscript3.cn/">
			<pageview>200</pageview>
		</site>
	</websites>	
 
trace(kingdaXML.site.pageview);
trace(kingdaXML.site);
trace(kingdaXML.site[0]);
trace(kingdaXML.site[1]);
trace(kingdaXML.site.@name);
trace(kingdaXML.site.@name[0]);
 
//使用“.”与@直接修改XML对象
kingdaXML.site[0].pageview = 200000;
trace(kingdaXML.site[0]);
kingdaXML.site[0].@name = "Kingda's first blog";
trace(kingdaXML.site[0]);
 
//使用“.”与@直接添加子元素和属性
kingdaXML.site[0].author = new XML(); //添加一个空白节点
kingdaXML.site[0].location = "Hangzhou, China";//以字符串添加一个子节点
kingdaXML.site[0].weekvisit = [1000,2000,3000,4000];//用数组添加一个子节点
kingdaXML.site[0].@language = "Chinese";
trace(kingdaXML.site[0]);
 
//使用“.”与@删除子元素和属性
delete kingdaXML.site[0].author;
delete kingdaXML.site[0].location;
delete kingdaXML.site[0].weekvisit;
delete kingdaXML.site[0].@language;
trace(kingdaXML.site[0]);

为了便于测试代码,可以注释掉部分代码