關於XML在與FLASH互動應用中的理解

來源:互聯網
上載者:User

一、書寫標準的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”,
然後在第一幀中添加如下代碼:

var my_XML:XML=new XML();
System.useCodepage=true;
var my_TextArea:mx.controls.TextArea;
my_XML.load("goods.xml")
my_XML.onLoad=function(ok:Boolean){
if(ok){
my_TextArea.text+=this;
}else{
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_TextArea:mx.controls.TextArea;
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;

上述所有執行個體示範:
http://www.taoshaw.com/taoshaw/study/LoadXml/LoadXML.swf

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.