HTTPService e4x object

對於<mx:HTTPService resultFormat="object"/>,<UnderlyingRIC>123E45678</UnderlyingRIC>會解析爲Number,導致界面上出現“Infinite”

使用resultFormat="e4x"來解決上述問題

          <mx:HTTPService id="KDBUnderlyingRICList" url="{myStrings.URLAddress + '.xml?UnderlyingRICList'}" 
          result="myFunctions.dataHandleUnderlyingRICList(event)" resultFormat="e4x"/>

          static public function dataHandleUnderlyingRICList(event:ResultEvent):void{
             myStrings.UnderlyingRICList = handleUnderlyingRIC(event.result);
          }
           //利用正則查找<UnderlyingRIC>123E45678</UnderlyingRIC>,轉爲<UnderlyingRIC>'123E45678</UnderlyingRIC>用SimpleXMLDecoder轉成對象,在對象中再去掉'           
           static public function handleUnderlyingRIC(obj:Object):ArrayCollection{
            var xml:String=XML(obj).toString();
            var x:String=xml.replace(/(<UnderlyingRIC>)([^<>].*)(<\/UnderlyingRIC>)/g,"$1'$2$3");
            var decoder:SimpleXMLDecoder=new SimpleXMLDecoder(true);
            var obj1:Object=decoder.decodeXML(new XMLDocument(x));
            var ac:ArrayCollection=obj1.R.r as ArrayCollection;
            for each(var obj:Object in ac){
                obj.UnderlyingRIC=obj.UnderlyingRIC.toString().replace("'","");
            }
            return ac;
           }


下面的方法轉爲xml Object,不過要注意科學記數法E

      public function covertXmlToArray(xml:XML):ArrayCollection{
         return  new ArrayCollection(new XMLListCollection(xml.elements()).toArray());
      }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章