·在字面值中使用表达式:可以将ActionScript代码直接嵌入到XML数据中,方法是将希望添加的代码包围在大括号{}中,这样便可以使用动态生成的值填充数据集合。
var efname:String="A";
var elname:int=1;
var etitle:String="+";
var employeelist:XML=<employeelist>
<employee>
<name first={efname} last={elname} />
<title>{etitle}</title>
</employee>
</employeelist>;
trace(employeelist.toXMLString());
·复制XML对象 使用copy方法复制XML对象。
var template:XML=<person><name><first /><last /></name></person>;
var me:XML=template;//me引用template,对me的修改也是对template的修改
var it:XML=template.copy();//创建副本
me.name.first="First Name";
me.name.last="Last Name";
·替换XML节点中的值 setChildren()方法可以一次替换XML对象中的所有节点
replace()方法则替换XML对象中的单个节点
var m123:XMLList=movieList.movie.(@id==123);
//m123.setChildren(null);
m123.setChildren(<title>Avatar</title>+<year>2009</year>+<director>Cameron</director>);//注意使用+号连接多个节点
m123.replace("title",<title>阿凡达</title>);
☆与字符串相互转换 将字符串转换为XML时需要格外注意,只能使用格式良好的XML文本,操作失败将会造成运行时错误。
var xml:XML=XML(xmlString);
美观打印
XML.prettyPrinting:默认值为true,将其设置为false时,XML字符串将自动格式化、删除空标记和额外的空白符。
XML.prettyIndent:默认值为2,设置缩进的空格数
☆从外部源加载XML数据 import flash.net.*;
var movieList:XML;
var url:URLRequest=new URLRequest("movieList.xml");
var loader:URLLoader=new URLLoader(url);
loader.addEventListener(Event.COMPLETE,onLoadCompleted);
function onLoadCompleted(e:Event):void{
if(loader.data){
movieList=XML(loader.data);
trace(movieList);
}
};
☆收集XML节点的元信息 ·查找节点类型 要判断当前节点的类型,可以对要检查的分支使用nodeKind()方法。该方法返回一个描述节点类型的字符串:element attribute text comment processing-instruction
☆使用名称空间 名称空间是在XML中使用的一种约定,其作用是将功能相似的XML元素和属性归入同一集合中,这与使用包对类进行分类极为相似。XML文件将在名称空间声明中定义名称空间的名称和一个惟一的标识符,用于将它与其他名称空间区分开来。
var ns:Namespace=new Namespace(uri);//省略前缀
var ns:Namespace=new Namespace(prefix,uri);
示例
var diffbook:XML=<book xmlns:bible="http://www.gaobar.cn">
<bible:chapter>Working with XML</bible:chapter>
</book>;
可以使用名称空间访问节点——双冒号(::)结合名称空间对象来访问非默认名称空间的节点,如
var bible:Namespace=diffbook.namespace("bible");
trace(bible);//http://www.gaobar.cn
trace(bible.prefix);//bible
trace(bible.uri);//http://www.gaobar.cn
trace(diffbook.bible::chapter);//Working with XML
trace(diffbook.bible::chapter.name());//http://www.gaobar.cn::chapter
trace(diffbook.bible::chapter.localName());//chapter
相关方法addNamespace()、removeNamespace()、setNamespace()、localName()参阅帮助文档。
或许,AS3最显著的变化就是引入了E4X,它是根据ECMAScript标准处理XML数据的全新机制。这使程序员能够在程序中无缝地操作XML。在AS3中可以使用XML字面值将XML数据直接写入代码,该字面值将被自动解析。☆ActionScript中的XML入门 ·可以将XML直接写入代码 var employeelist:XML=