Flex中XML數據的處理

来源:互联网 发布:淘宝u站是什么 编辑:程序博客网 时间:2024/06/05 22:19

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設計圖形開發平台還行,但對於程序開發平台還是有所欠缺,有些混亂,不知所云.

原创粉丝点击