[1b]actionscript 3.0系列教程(4):爽快使用xml[/1b]
為什麼放棄as2.0選擇as3.0?如果只允許我說三個理由。那麼as3.0對xml的近乎完美的支援絕對是其中乙個。
[1b]簡單說說as3.0中對於xml支援的不同吧:[/1b]
.as2.0對xml的支援勉勉強強,將就著可以用。而as3.0中對xml的支援是全方位的,極其強大和靈活的。
as2.0對xml的支援不是內建的(build-in),也並非基於ecmascript for xml(e4x)標準。而as3.0中對xml的支援符合e4x標準,它的設計有三個優點:
1. 簡易。包括操作和可讀性。你會發現as3.0中對於xml的操作猶如對乙個普通object物件一樣淺顯易懂。語句非常淺白流暢。
2. 連續性。其各個功能的設計和as3.0其餘的部分思想一致,易於理解。
3. 熟悉。操作符和操作邏輯對我們來說都相當熟悉易用。
在as2.0時代,為了解決這部分的問題
效率。效率包括兩方面,開發效率,和**執行效率。開發效率的論述見上。as3.0對於xml的執行效率遠遠高過沒有內建xml支援的as2.0。
[1b]xml的輸入[/1b]
在as2.0時代,在**行中輸入xml**是一種痛苦。如果不是從檔案中讀取,那麼我們就要忍受一長串擠在一塊兒的字串。
而在as3.0中,太簡單了。直接按照xml的內容輸即可,想換行就換行,想tab就tab,就乙個字,爽。
新建乙個fla,選中第一幀,f9開啟動作面板,輸入如下**:
// //例1
var kingdaxml:xml =
2 3
4 trace (kingdaxml.item[1].level); //output:3
//例2
var ks:string = "this is a test";
var kxml:xml = new xml(ks);
trace (kxml.txt); //output:this is a test;
例1中注意到沒,直接寫xml內容在後面,想換行就換行,想tab就tab,多爽。不想as2.0中寫string時,換個行就不行了。
寫完這一句後,我們所寫出的類似於string的形式立刻就被flash理解成了xml物件了,所以我們馬上就可以用"."操作符來訪問相應的屬性。本例中訪問了第2個item節點的level值。
這麼簡便直觀的訪問方式是不是比 as2.0中那千遍一律的childnodes要好得多?
不過要注意,最後可以加";"結束。但我為了xml的視覺美觀沒有加。這個沒有關係,編譯時不會考慮這一點。
例2展示了如何將乙個包含了xml內容的字串轉換成xml物件。用的是xml的建構函式轉換的。
as3更有趣的是,可以使用已有的變數來直接構造xml,帶來方便的程式設計特性。如下例。
var rootnodename :string = "site";
var subnodename :string = "orgin";
var subnodecontent :string = "kingda』s blog";
var attributename :string = "url"
var attributevalue :string = "";
var extxml:xml = ;
trace (extxml.tostring());
/*output:
[1b]要點就是要把變數用"{}"括起來,並且設定屬性時不要再加引號了。[/1b]
[1b]xml的外部讀取[/1b]
包括讀取外部xml檔案,和通過url讀取xml。as3.0中不像2.0那樣整合了乙個load()。
as3.0在架構上就設計了所有與外部打交道的都由urlrequest物件來進行,資料都由urlloader物件來接受。這個我們會在下一部分教程詳細講解。這一次只要知道這樣的架構設計是深思熟慮,且簡潔優美的即可。
[1b]xml的操作[/1b]
AS3的XML刪除節點
e4x規範中定義有delete和deletebyindex方法用來刪除特定的xml節點,但是在當前版本的actionscript 3.0實現中,並沒有實現這兩個方法。在as3的help文件裡也沒有提及如何刪除乙個xml節點。其中乙個方法就是 delete onexmlnode 暫時並不知道有什麼其他...
AS3中XML刪除節點
e4x規範中定義有delete和deletebyindex方法用來刪除特定的xml節點,但是在當前版本的actionscript 3.0實現中,並沒有實現這兩個方法。在as3的help文件裡也沒有提及如何刪除乙個xml節點。其中乙個方法就是 delete onexmlnode 暫時並不知道有什麼其他...
as3讀取xml中CDATA的方法
對於使用as3解析類似如下有cdata的xml其實很簡單,具體是要了解xml的等級關係。檔名 test.xml 在上面的xml中s這一級的內容有 attrbute name和其自己的內容 即中間的內容 as3使用xml類實現讀取的功能,如下 public function load var requ...