20.3.添加XML元素

问题
我想构造一个XML对象,然后往内添加元素
解决办法
使用E4X语法创建子元素并添加到XML树中。另外用insertChildBefore( )和insertChildAfter( ) 方法更容易控制元素的添加。
讨论
在日常工作中经常碰到往XML对象里添加新节点,然后把XML传递给其他应用程序。用E4X语法添加新节点是非常简单的,只要用操作符(.),跟一般的对象属性操作基本类似,看下面的例子:
+展开
-ActionScript
// 创建一个XML实例
var example:XML = <example />;
// 创建新的节点
example.newElement = <newElement />;
/* 显示:
<example>
<newElement/>
</example>
*/

trace( example );

上面的代码中,通过newElement属性来添加新的元素,属性名和内容不一定要相同,如下面的例子:
+展开
-ActionScript
var example:XML = <example />;
example.emptyElement = "";
/* 显示:
<example>
<emptyElement/>
</example>
*/

trace( example );

除了用(。)运算符外还可以用([ 和]), 如:
+展开
-ActionScript
var example:XML = <example />;
var id:int = 10;
example[ "user" + id ] = "";
/* 显示:
<example>
<user10/>
</example>
*/

trace( example );

两种写法基本上通用,不过还是有区别的,如下面的例子编译器就会报错:
+展开
-ActionScript
example.some-element = ""//编译错误

这种情况下只能用[]来设置属性名了:
+展开
-ActionScript
example[ "some-element" ] = "";

还有个问题需要注意,这种方法增加的节点都是添加在XML树的尾部,要解决这个问题,可用insertChildBefore( )和insertChildAfter( ) 方法来控制插入的位置。insertChildBefore( ) 方法在当前元素位置前插入新元素,而insertChildAfter( ) 在当前元素的后面插入,看下面的例子:
+展开
-ActionScript
var example:XML = <example/>;
example.two = "";
example = example.insertChildBefore( example.two, <one /> );
example = example.insertChildAfter( example.two, <three /> );
/* 显示:
<example>
<one/>
<two/>
<three/>
</example>
*/

trace( example );

要注意的是这两个方法不是修改原来的XML,而是返回新的XML 实例。

加支付宝好友偷能量挖...


评论(0)网络
阅读(106)喜欢(0)flash/flex/fcs/AIR