ActionScript中構建XML的方法
// A. Construct an XML document with a LOGIN element
loginXML = new XML();
loginElement = loginXML.createElement("LOGIN");
loginElement.attributes.username = username; //設置屬性
loginElement.attributes.password = password;
loginXML.appendChild(loginElement);
// B. Construct an XML object to hold the server's reply
loginReplyXML = new XML();
loginReplyXML.onLoad = onLoginReply;
// C. Send the LOGIN element to the server,
// place the reply in loginReplyXML
loginXML.sendAndLoad("https://www.imexstocks.com/main.cgi",
loginReplyXML);
如果有一個xml格式的字符串,那麼可以用XML.parseXML(string)來得到.如果從java object里得到一個w3c的document對象,那麼可以直接傳給一個XML對象.
ActionScript中讀取XML的方法
因為actionScript的xml對象好像不支持xpath表達式,所以處理起來非常麻煩.經常要用到循環處理.
如下面的xml對象中有數據
<item><label>系統設定</label><data>SY</data></item>
<item><label>考勤</label><data>PK</data></item>
<item><label>薪資</label><data>PZ</data></item>
那麼瀏覽XML的方法如下
var headarr:Array=new Array();
headlink.dataProvider=headarr; //headlink是一個list類型的MXML標籤,如list,linkbar,combox等.,
var nodes=hxml.childNodes;
<![CDATA[
for (var i = 0; i < nodes.length; i++){
headlink.dataProvider.addItem(nodes[i].firstChild.firstChild.nodeValue,nodes[i].lastChild.firstChild.nodeValue)
}
]]>
這樣就可以把XML中的數據導入標籤中,上面dataProvider用的是Array,實際上還可以用mx:model或mx:xml來提供數據的裝載.不過在測試中發現,在mx:model或mx:xml中必須預先存在有格式的數據,而且數據必須有兩條以上相同格式,這樣在additem後才可以實現要求,如下面所示
<mx:Model id="linkData">
<item> //item名稱可以隨意
<label>
dfsg
</label>
<data>
df
</data>
</item>
<item>
<label>
dfsgfd
</label>
<data>
dff
</data>
</item>
</mx:Model>
而headlink.dataProvider=這裡就改為等於linkData.item.這樣也可以實現,但就是多了兩個item出來.
好像Array,mx:xml,mx:model作為數據裝載時,在addItem時,第一個參數默認應為label,第二個為data,而在MXML的標籤取數據時,默認也是按照這樣的規則取出數據的.
上面說到的是動態裝載數據,如果是靜態數據,那就很方便了,
對於Array來說,有多種方式定義,
var a:Array=[“dfs“,“df“];
或var a:Array=[{label:“dag“,data:“dsggh“},{label:““,data:“dfsdg“}];
或是用Array.push方法添加.不過這個方法是否可以像上面additem那樣添加label,data進去,不可而知.
實際上{label:“dag“,data:“dsggh“}這樣的表達方式就代表一個數組形式的常量,用MXML來表示可能會讓我們更明白對Array的一些操作,
<mx:Array id=="myarray">
<mx:Object label="" data=""/>
<mx:Object label="" data=""/>
</mx:Array>
如myarray[0].label或myarray[0].data,或是在event事件觸發時用event.data.data來訪問,案例可看MXML學習紀錄一
可能是對flex以及actionscript了解不多,總覺得MM設計圖形開發平台還行,但對於程序開發平台還是有所欠缺,有些混亂,不知所云.
Flex中XML數據的處理
最新推荐文章于 2017-03-14 18:47:37 发布