下面,我將對XML文件的解析方面做詳細的介紹。
為了便于講解,在此,我舉一個簡單的例子。
1、新建一個記事本文件,在里面輸入如下內容:
<購買物品>
<襯衣 顏色="白色" 品牌="雅戈爾">1件</襯衣>
<褲子 顏色="深藍" 品牌="王子褲">2件</褲子>
<鞋子 顏色="黑色" 品牌="紅蜻蜓">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.firstChild;
兄弟節點: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
源文件下載:loadXML.rar
新聞熱點
疑難解答