天天看點

關于XML在與FLASH互動應用中的了解

一、書寫标準的XML需要注意以下幾點:

1、一個标準的XML文檔必須要在第一行以"<?xml>"開頭,以及一個"<?/>"結尾,其中開頭部分需申明XML的版本,如:version="1.0",也應包含一個關于編碼的聲明:“encoding="utf-8"”;

2、XML要求所有的标簽必須在文檔結束之前被閉合,如果标簽中包含内容,則必須寫成“<标簽名>内容</标簽名>"的格式,如果内容為空,則應寫在</标簽名>的格式;即,後面必須有</XXX>這種格式的。

3、每個XML都有有一個根元素,也叫根節點。

4、節點有節點值和屬性。

5、XML的節點值如果出現與XML标簽關鍵字一樣的字元,XML将會無法解析文檔,比如,某個節點值如果是一個大于或者小于号,就會讓解釋器産生一個錯誤,

二、在FLASH中建立一個簡單的執行個體:

//建立一個新的XML類執行個體 var my_XML:XML=new XML(); //建立一個TextArea元件,用于顯示此XML内容 var my_TextArea:mx.controls.TextArea; //加載外部XML檔案 my_XML.load("my_xml.xml"); //為load函數定義onLoad函數---此處是必須的。隻有當加載成功後,才能控制XML。否則不能。 my_XML.onLoad=function(ok:Boolean){ if(ok){ my_TextArea.text+=this; }else{ my_TextArea.text+="加載失敗..." } //忽略空白: my_XML.ignoreWhite=true;

三、關于FLASH解析XML詳解,說白了,也就是對節點的讀取。

首先,來看看這幅圖,稍微加點印象。

下面,我将對XML檔案的解析方面做詳細的介紹。

為了便于講解,在此,我舉一個簡單的例子。

1、建立一個記事本檔案,在裡面輸入如下内容:

<購買物品> <襯衣 顔色="白色" 品牌="雅戈爾">1件</襯衣> <褲子 顔色="深藍" 品牌="王子褲">1條</褲子> <鞋子 顔色="黑色" 品牌="紅蜻蜓">3雙</鞋子> <總花費金額> <打的費>50元</打的費> <貨物金>1000元</貨物金> </總花費金額> </購買物品>

然後儲存為"goods.xml",注意,在編碼處,要選擇"Unicode"。

2、下面,就對裡面的各項值進行解讀。

讀取整個XML檔案的方法:

在剛才的XML的同級目錄下建立一FLA檔案,然後在場景中放置一TextArea元件。并賦執行個體名“my_TextArea”,

然後在第一幀中添加如下代碼:

System.useCodepage=true; my_XML.load("goods.xml") my_TextArea.text+="加載失敗"

按CTRL+ENTER測試,即可以看效果。

首先,我們來看看如何對XML中的節點名稱或者節點屬性進行讀取呢?

比如,我們要讀取如例子中的"購買物品"這幾個字元,該如何操作呢?

我們使用如下語句:

this.firstChild.nodeName;

如果要讀取"襯衣":

this.firstChild.childNodes[0].nodeName;

如果要讀取"1條":

this.firstChild.childNodes[1].childNodes[0].nodeValue;

如果要讀取褲子的品牌:

this.firstChild.childNodes[1].attributes.品牌;

将XML讀取進LIST元件中:

System.useCodepage = true; var my_List:mx.controls.List; var my_XML:XML = new XML(); my_XML.ignoreWhite = true; my_XML.load("shopping.xml"); my_XML.onLoad = function(ok:Boolean) {   if (ok) {     var childnodes = this.firstChild.childNodes;     for (i=0; i<childnodes.length; i++) {       my_List.addItem({label:childnodes.nodeName});     }   } else {     my_TextArea.text += "加載失敗";   } };

第一個節點:firstChild:

用法:this.firstChild;

最後一個節點:lastChild

用法:this.lastChild;

兄弟節點:nextSibling:

用法:this.firstChild.childNodes[0].nextSibling;

另一個兄弟節點:previousSibling:

用法:this.firstChild.childNodes[0].previousSibling;

差別:nextSibling是朝後,而previousSibling是目前之前;

父類節點:parentNode:

用法:this.firstChild.parentNode;

上述所有執行個體示範:

<a href="http://www.taoshaw.com/taoshaw/study/LoadXml/LoadXML.swf" target="_blank">http://www.taoshaw.com/taoshaw/study/LoadXml/LoadXML.swf</a>

版權

作者:靈動生活 郝憲玮

如果你認為此文章有用,請點選底端的【推薦】讓其他人也了解此文章,

關于XML在與FLASH互動應用中的了解

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。