AS3與XML 的結合

2021-08-25 03:44:20 字數 1974 閱讀 6455

[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...