資源描述:
《xml節(jié)點(diǎn)詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、2012-05-1511:10【轉(zhuǎn)】XML節(jié)點(diǎn)的認(rèn)識(shí)XML文件就像一個(gè)樹狀的目錄??梢园训谝恍挟?dāng)作它扎根的“土地”?! ML文件是由節(jié)點(diǎn)構(gòu)成的。它的第一個(gè)節(jié)點(diǎn)為“根節(jié)點(diǎn)”。一個(gè)XML文件必須有且只能有一個(gè)根節(jié)點(diǎn),其他節(jié)點(diǎn)都必須是它的子節(jié)點(diǎn)。我們?cè)贔LASH里使用XML對(duì)象解析XML的時(shí)候,this代表整個(gè)XML文件,它的根節(jié)點(diǎn)就是this.firstChild。this.firstChild.childNodes則返回由根節(jié)點(diǎn)的所有子節(jié)點(diǎn)組成的節(jié)點(diǎn)數(shù)組?! ∶總€(gè)子節(jié)點(diǎn)又可以有自己的子節(jié)點(diǎn)。節(jié)點(diǎn)編
2、號(hào)由0開始,根節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)為this.firstChild.childNodes[0],它的子節(jié)點(diǎn)數(shù)組就是this.firstChild.childNodes[0].childNodes?! ±^續(xù)深入到?jīng)]有子節(jié)點(diǎn)的單一節(jié)點(diǎn),比如根節(jié)點(diǎn)第一個(gè)子節(jié)點(diǎn)的第二個(gè)子節(jié)點(diǎn)this.firstChild.childNodes[0].childNodes[1],它返回的是一個(gè)XML對(duì)象(Object)。這里需要特別注意,節(jié)點(diǎn)標(biāo)簽之間的數(shù)據(jù)本身也視為一個(gè)節(jié)點(diǎn)this.firstChild.childNodes[0
3、].childNodes[1].firstChild,而不是一個(gè)值?! ∥覀兘馕鯴ML的最終目的當(dāng)然就是獲得數(shù)據(jù)的值:this.firstChild.childNodes[0].childNodes[1].firstChild.nodeValue。注意!不是this.firstChild.childNodes[0].childNodes[1].nodeValue!節(jié)點(diǎn)名稱有時(shí)也是我們需要的數(shù)據(jù):this.firstChild.childNodes[0].childNodes[1].nodeName。注
4、意比較獲得節(jié)點(diǎn)名稱和節(jié)點(diǎn)值的不同。 除了作為子節(jié)點(diǎn),數(shù)據(jù)還可以作為節(jié)點(diǎn)屬性。節(jié)點(diǎn)屬性寫在節(jié)點(diǎn)標(biāo)簽內(nèi)部:<節(jié)點(diǎn)屬性1="屬性值"屬性2="屬性值"......>節(jié)點(diǎn)值。如果數(shù)據(jù)全作為屬性而沒有節(jié)點(diǎn)值,則可以寫成<節(jié)點(diǎn)屬性="屬性值"/>的形式,而不用寫成<節(jié)點(diǎn)屬性="屬性值">。注意節(jié)點(diǎn)必須關(guān)閉,寫成<節(jié)點(diǎn)屬性="屬性值">就不對(duì)了?! 」?jié)點(diǎn)的所有屬性返回一個(gè)通用對(duì)象(Object),比如根節(jié)點(diǎn)第六個(gè)子節(jié)點(diǎn)的第三個(gè)子節(jié)點(diǎn)的所有屬性為:this.firstChild.childNodes[5].chil
5、dNodes[2].attributes。獲得其中的“地址”屬性:this.firstChild.childNodes[5].childNodes[2].attributes.地址。 比較而言,數(shù)據(jù)作為屬性的方式更好。因?yàn)槲募鄬?duì)比較小,而且避免深入更多層子節(jié)點(diǎn),解析速度更快。 下面以簡(jiǎn)歷的JobXMLModel類(模型)看看在flash里具體的解析。JobXMLModel類繼承XML類,首先在構(gòu)造函數(shù)里設(shè)置ignoreWhite屬性為true忽略XML文件中多余的空格?! ?/構(gòu)造函數(shù) pub
6、licfunctionJobXMLModel(){ ignoreWhite=true; } //覆蓋XML類的onLoad事件 privatefunctiononLoad():Void{ //變量tmpA存儲(chǔ)根節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)組?! artmpA:Array=this.firstChild.childNodes; //把tmpA的長(zhǎng)度存儲(chǔ)在tmpL變量里?! artmpL:Number=tmpA.length; //以根節(jié)點(diǎn)第一、第六個(gè)子節(jié)點(diǎn)為例,同樣存儲(chǔ)數(shù)組長(zhǎng)度變量 varbasicIn
7、foL:Number=tmpA[0].childNodes.length; varmyWorksL:Number=tmpA[5].childNodes.length; //根節(jié)點(diǎn)子節(jié)點(diǎn)的節(jié)點(diǎn)名稱存入數(shù)組 for(vari:Number=0;i 項(xiàng)目列表.push(tmpA[i].nodeName); } //第一個(gè)子節(jié)點(diǎn)數(shù)據(jù)作為子節(jié)點(diǎn) for(vari:Number=0;i //單一節(jié)點(diǎn)返回一個(gè)XML對(duì)象,用一個(gè)變量tmpO存儲(chǔ)它 vartmpO:Object=tmpA[0].child
8、Nodes[i]; //把每個(gè)節(jié)點(diǎn)的名稱和節(jié)點(diǎn)值作為通用對(duì)象(Object)的屬性存在數(shù)組里 基本資料.push({title:tmpO.nodeName,content:tmpO.firstChild.nodeValue}); } //第六個(gè)子節(jié)點(diǎn)數(shù)據(jù)作為節(jié)點(diǎn)屬性 for(vari:Number=0;i vartmpO:Object=tmpA[5].childNodes[i]; //把節(jié)點(diǎn)名稱和節(jié)點(diǎn)屬性作為通用