1.7 在Flex中操作XML
XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)常用于數(shù)據(jù)描述、數(shù)據(jù)封裝和數(shù)據(jù)結(jié)構(gòu)化處理。XML提供了簡單和易讀的數(shù)據(jù)組織方式,可以更加方便和標(biāo)準(zhǔn)地對(duì)數(shù)據(jù)進(jìn)行讀取、傳輸和操作。Flex技術(shù)中使用的MXML也是基于XML的一種標(biāo)簽規(guī)范。
1.7.1 XML在Flex中的應(yīng)用
在Flex中處理XML數(shù)據(jù)需要理解一些基本的XML概念。在本書中會(huì)涉及到的XML概念如下。
1. 元素
元素是XML數(shù)據(jù)中的一個(gè)數(shù)據(jù)條目,通過一對(duì)標(biāo)簽和標(biāo)簽內(nèi)的子元素定義。XML的元素中可以包含文本數(shù)據(jù)或其他的元素,也可以為空。
2. 空元素
空元素是不包含子元素的XML元素。通常XML的空元素可以寫成自封閉的格式,例如<emptyitem/>。
3. 文檔
文檔是一個(gè)獨(dú)立的XML結(jié)構(gòu)。一個(gè)XML文檔可以包含任意數(shù)量的XML元素,但是必須只包含唯一的根元素。
4. 節(jié)點(diǎn)
節(jié)點(diǎn)和元素的意義相同。
5. 屬性
屬性是對(duì)標(biāo)簽內(nèi)的一個(gè)XML元素條目的命名。通過 屬性名=“值”的格式進(jìn)行定義。可以看作是位于元素內(nèi)部的子元素。
Flex為處理XML提供了必要的支持,ActionScript類XML和XMLList用于建立Flex的XML對(duì)象。XML類用于描述單一的XML對(duì)象,如XML的一個(gè)節(jié)點(diǎn)數(shù)據(jù)以及這個(gè)節(jié)點(diǎn)的所有Attribute值和下級(jí)節(jié)點(diǎn)信息;XMLList類用于描述一組XML元素,這組元素需要有相同的XML標(biāo)簽,通過XMLList可以靈活地對(duì)XML元素集合進(jìn)行添加、刪除、修改和查詢操作。
通過MXML我們可以使用<mx:XML>標(biāo)簽和<mx:XMLList>標(biāo)簽構(gòu)造靜態(tài)的XML結(jié)構(gòu)。ActionScript則可以對(duì)MXML的靜態(tài)XML對(duì)象或外部文檔進(jìn)行各種數(shù)據(jù)處理操作,對(duì)于大部分XML數(shù)據(jù)的處理操作都是通過ActionScript完成。
通常ActionScript可以完成下列關(guān)于XML的操作:
- 構(gòu)建XML文檔,添加XML元素和值。
- 訪問XML元素,屬性(Attribute)和值。
- 查詢XML元素。
- 遍歷XML數(shù)據(jù)的集合。
- 進(jìn)行XML類型和String類型的相互轉(zhuǎn)換。
- 操作XML命名空間。
- 讀取外部的XML文件。
1.7.2 通過E4X處理XML
我們已經(jīng)了解到ActionScript是基于標(biāo)準(zhǔn)的ECMAScript語言規(guī)范構(gòu)建的,因此也沿襲了ECMAScript處理XML的API子集ECMAScript for XML,簡稱E4X。E4X包含下列類型用于處理XML:XML、XMLList、QName和Namespace。
1. 創(chuàng)建E4X的XML對(duì)象
E4X對(duì)于XML的支持遵循著簡潔性、高聚合性和易用性的設(shè)計(jì)原則。因此使用E4X并沒有很高的難度。首先我們來看看如何用E4X創(chuàng)建XML類型:
var xmlData:XML = <product> <item id = "0001"> <name>Thinkpad</name> <price>24000</price> </item> <item id = "0001"> <name>Thinkpad</name> <price>24000</price> </item> </product>
上述代碼創(chuàng)建了一個(gè)變量名為xmlData的E4X的XML對(duì)象。構(gòu)建方式是非常簡單的,和定義一個(gè)簡單類型的變量沒有任何區(qū)別,直接把XML的內(nèi)容按順序?qū)懺诘忍?hào)右邊即可,E4X會(huì)在編譯ActionScript時(shí)對(duì)XML的合法性進(jìn)行驗(yàn)證,不合法的XML會(huì)在編譯過程中報(bào)錯(cuò)。
2. 操作E4X的XML類型
E4X的XML對(duì)象描述了XML的數(shù)據(jù)結(jié)構(gòu)、節(jié)點(diǎn)、文本節(jié)點(diǎn)、屬性/屬性值、操作指令、注釋信息等內(nèi)容。不包含操作指令和注釋信息的XML對(duì)象被定義為簡單XML對(duì)象,在構(gòu)建XML對(duì)象時(shí),可以通過設(shè)定下列語句來實(shí)現(xiàn)簡單對(duì)象的創(chuàng)建:
XML.ignoreComments = true; XML.ignoreProcessingInstructions = true;
包含操作指令和注釋信息的XML對(duì)象被定義為復(fù)雜XML對(duì)象,可以通過comments()方法和processingInstructions()方法來處理注釋和操作指令內(nèi)容。
包括上述兩個(gè)屬性,E4X的XML對(duì)象共包含5個(gè)靜態(tài)屬性,用于初始化設(shè)定或定制操作XML的具體格式。屬性列舉如下。
- ignoreComments:
該屬性用于指定是否處理XML注釋。
- ignoreProcessingInstructions:
該屬性用于指定是否處理XML操作指令。
- ignoreWhitespace:
該屬性用于指定是否處理XML中的空格符。
- prettyIndent:
該屬性用于指定對(duì)toString()方法是否進(jìn)行適當(dāng)縮進(jìn)。
- prettyPrinting:
該屬性用于指定對(duì)toXMLString()方法是否進(jìn)行適當(dāng)縮進(jìn)。
XML對(duì)象結(jié)構(gòu)的解析和處理通過E4X的方法來實(shí)現(xiàn)。E4X為XML對(duì)象提供了非常完善的方法支持。通過children()、elements()、parent()方法可以引用到XML對(duì)象之中的XMLList對(duì)象。本書中對(duì)E4X的具體API不詳細(xì)講解,讀者如有需要可參考ECMA357用戶手冊(cè)。
3. 操作E4X的XMLList類型
XMLList類型表明這是一個(gè)具有相同結(jié)構(gòu)的XML元素集合。XMLList對(duì)象同樣支持children()、elements()、parent()等針對(duì)上下級(jí)節(jié)點(diǎn)的索引。同時(shí),XMLList對(duì)象還支持attribute()、attributes()方法來操作自身的屬性信息。
本文鏈接:http://m.95time.cn/tech/multimedia/2008/6336.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 使用Adobe Flex Builder 下一頁
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|